Loading drivers/gpu/drm/msm/msm_gem.c +9 −10 Original line number Diff line number Diff line Loading @@ -191,17 +191,8 @@ static struct page **get_pages(struct drm_gem_object *obj) static void put_pages(struct drm_gem_object *obj) { struct msm_gem_object *msm_obj = to_msm_bo(obj); int id; if (msm_obj->pages) { for (id = 0; id < ARRAY_SIZE(msm_obj->domain); id++) { if (msm_obj->domain[id].sgt) { sg_free_table(msm_obj->domain[id].sgt); kfree(msm_obj->domain[id].sgt); msm_obj->domain[id].sgt = NULL; } } if (use_pages(obj)) msm_drm_free_buf(obj); else { Loading Loading @@ -668,10 +659,15 @@ void msm_gem_free_object(struct drm_gem_object *obj) } msm_obj->domain[id].iova = 0; } if (msm_obj->domain[id].sgt) { sg_free_table(msm_obj->domain[id].sgt); kfree(msm_obj->domain[id].sgt); msm_obj->domain[id].sgt = NULL; } } if (obj->import_attach) { drm_prime_gem_destroy(obj, NULL); if (msm_obj->vaddr) dma_buf_vunmap(obj->import_attach->dmabuf, msm_obj->vaddr); Loading @@ -683,6 +679,8 @@ void msm_gem_free_object(struct drm_gem_object *obj) drm_free_large(msm_obj->pages); msm_obj->pages = NULL; } drm_prime_gem_destroy(obj, msm_obj->import_sgt); } else { if (msm_obj->vaddr) vunmap(msm_obj->vaddr); Loading Loading @@ -848,6 +846,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev, npages = size / PAGE_SIZE; msm_obj = to_msm_bo(obj); msm_obj->import_sgt = sgt; msm_obj->pages = drm_malloc_ab(npages, sizeof(struct page *)); if (!msm_obj->pages) { ret = -ENOMEM; Loading drivers/gpu/drm/msm/msm_gem.h +1 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ struct msm_gem_object { struct sg_table *sgt; dma_addr_t iova; } domain[NUM_DOMAINS]; struct sg_table *import_sgt; /* normally (resv == &_resv) except for imported bo's */ struct reservation_object *resv; Loading Loading
drivers/gpu/drm/msm/msm_gem.c +9 −10 Original line number Diff line number Diff line Loading @@ -191,17 +191,8 @@ static struct page **get_pages(struct drm_gem_object *obj) static void put_pages(struct drm_gem_object *obj) { struct msm_gem_object *msm_obj = to_msm_bo(obj); int id; if (msm_obj->pages) { for (id = 0; id < ARRAY_SIZE(msm_obj->domain); id++) { if (msm_obj->domain[id].sgt) { sg_free_table(msm_obj->domain[id].sgt); kfree(msm_obj->domain[id].sgt); msm_obj->domain[id].sgt = NULL; } } if (use_pages(obj)) msm_drm_free_buf(obj); else { Loading Loading @@ -668,10 +659,15 @@ void msm_gem_free_object(struct drm_gem_object *obj) } msm_obj->domain[id].iova = 0; } if (msm_obj->domain[id].sgt) { sg_free_table(msm_obj->domain[id].sgt); kfree(msm_obj->domain[id].sgt); msm_obj->domain[id].sgt = NULL; } } if (obj->import_attach) { drm_prime_gem_destroy(obj, NULL); if (msm_obj->vaddr) dma_buf_vunmap(obj->import_attach->dmabuf, msm_obj->vaddr); Loading @@ -683,6 +679,8 @@ void msm_gem_free_object(struct drm_gem_object *obj) drm_free_large(msm_obj->pages); msm_obj->pages = NULL; } drm_prime_gem_destroy(obj, msm_obj->import_sgt); } else { if (msm_obj->vaddr) vunmap(msm_obj->vaddr); Loading Loading @@ -848,6 +846,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev, npages = size / PAGE_SIZE; msm_obj = to_msm_bo(obj); msm_obj->import_sgt = sgt; msm_obj->pages = drm_malloc_ab(npages, sizeof(struct page *)); if (!msm_obj->pages) { ret = -ENOMEM; Loading
drivers/gpu/drm/msm/msm_gem.h +1 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ struct msm_gem_object { struct sg_table *sgt; dma_addr_t iova; } domain[NUM_DOMAINS]; struct sg_table *import_sgt; /* normally (resv == &_resv) except for imported bo's */ struct reservation_object *resv; Loading