aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/drm_gem_cma_helper.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c
index 2c07cb9550ef..fbb9df6becb0 100644
--- a/drivers/gpu/drm/drm_gem_cma_helper.c
+++ b/drivers/gpu/drm/drm_gem_cma_helper.c
@@ -234,8 +234,17 @@ static int drm_gem_cma_mmap_obj(struct drm_gem_cma_object *cma_obj,
234{ 234{
235 int ret; 235 int ret;
236 236
237 ret = remap_pfn_range(vma, vma->vm_start, cma_obj->paddr >> PAGE_SHIFT, 237 /*
238 vma->vm_end - vma->vm_start, vma->vm_page_prot); 238 * Clear the VM_PFNMAP flag that was set by drm_gem_mmap(), and set the
239 * vm_pgoff (used as a fake buffer offset by DRM) to 0 as we want to map
240 * the whole buffer.
241 */
242 vma->vm_flags &= ~VM_PFNMAP;
243 vma->vm_pgoff = 0;
244
245 ret = dma_mmap_writecombine(cma_obj->base.dev->dev, vma,
246 cma_obj->vaddr, cma_obj->paddr,
247 vma->vm_end - vma->vm_start);
239 if (ret) 248 if (ret)
240 drm_gem_vm_close(vma); 249 drm_gem_vm_close(vma);
241 250