diff options
Diffstat (limited to 'drivers/gpu/drm/msm/msm_gem.c')
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 51a95da694d8..c8886d3071fa 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c | |||
@@ -391,6 +391,10 @@ static int msm_gem_pin_iova(struct drm_gem_object *obj, | |||
391 | struct msm_gem_object *msm_obj = to_msm_bo(obj); | 391 | struct msm_gem_object *msm_obj = to_msm_bo(obj); |
392 | struct msm_gem_vma *vma; | 392 | struct msm_gem_vma *vma; |
393 | struct page **pages; | 393 | struct page **pages; |
394 | int prot = IOMMU_READ; | ||
395 | |||
396 | if (!(msm_obj->flags & MSM_BO_GPU_READONLY)) | ||
397 | prot |= IOMMU_WRITE; | ||
394 | 398 | ||
395 | WARN_ON(!mutex_is_locked(&msm_obj->lock)); | 399 | WARN_ON(!mutex_is_locked(&msm_obj->lock)); |
396 | 400 | ||
@@ -405,8 +409,8 @@ static int msm_gem_pin_iova(struct drm_gem_object *obj, | |||
405 | if (IS_ERR(pages)) | 409 | if (IS_ERR(pages)) |
406 | return PTR_ERR(pages); | 410 | return PTR_ERR(pages); |
407 | 411 | ||
408 | return msm_gem_map_vma(aspace, vma, msm_obj->sgt, | 412 | return msm_gem_map_vma(aspace, vma, prot, |
409 | obj->size >> PAGE_SHIFT); | 413 | msm_obj->sgt, obj->size >> PAGE_SHIFT); |
410 | } | 414 | } |
411 | 415 | ||
412 | /* get iova and pin it. Should have a matching put */ | 416 | /* get iova and pin it. Should have a matching put */ |