diff options
Diffstat (limited to 'drivers/gpu/drm/msm/msm_gem.c')
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 95196479f651..f583bb4222f9 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c | |||
@@ -132,17 +132,19 @@ static void put_pages(struct drm_gem_object *obj) | |||
132 | struct msm_gem_object *msm_obj = to_msm_bo(obj); | 132 | struct msm_gem_object *msm_obj = to_msm_bo(obj); |
133 | 133 | ||
134 | if (msm_obj->pages) { | 134 | if (msm_obj->pages) { |
135 | /* For non-cached buffers, ensure the new pages are clean | 135 | if (msm_obj->sgt) { |
136 | * because display controller, GPU, etc. are not coherent: | 136 | /* For non-cached buffers, ensure the new |
137 | */ | 137 | * pages are clean because display controller, |
138 | if (msm_obj->flags & (MSM_BO_WC|MSM_BO_UNCACHED)) | 138 | * GPU, etc. are not coherent: |
139 | dma_unmap_sg(obj->dev->dev, msm_obj->sgt->sgl, | 139 | */ |
140 | msm_obj->sgt->nents, DMA_BIDIRECTIONAL); | 140 | if (msm_obj->flags & (MSM_BO_WC|MSM_BO_UNCACHED)) |
141 | dma_unmap_sg(obj->dev->dev, msm_obj->sgt->sgl, | ||
142 | msm_obj->sgt->nents, | ||
143 | DMA_BIDIRECTIONAL); | ||
141 | 144 | ||
142 | if (msm_obj->sgt) | ||
143 | sg_free_table(msm_obj->sgt); | 145 | sg_free_table(msm_obj->sgt); |
144 | 146 | kfree(msm_obj->sgt); | |
145 | kfree(msm_obj->sgt); | 147 | } |
146 | 148 | ||
147 | if (use_pages(obj)) | 149 | if (use_pages(obj)) |
148 | drm_gem_put_pages(obj, msm_obj->pages, true, false); | 150 | drm_gem_put_pages(obj, msm_obj->pages, true, false); |