diff options
-rw-r--r-- | drivers/gpu/drm/drm_gem_cma_helper.c | 13 |
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 | ||