Loading drivers/gpu/drm/msm/msm_drv.h +2 −1 Original line number Diff line number Diff line Loading @@ -250,7 +250,8 @@ void msm_gem_purge_vma(struct msm_gem_address_space *aspace, void msm_gem_unmap_vma(struct msm_gem_address_space *aspace, struct msm_gem_vma *vma); int msm_gem_map_vma(struct msm_gem_address_space *aspace, struct msm_gem_vma *vma, struct sg_table *sgt, int npages); struct msm_gem_vma *vma, int prot, struct sg_table *sgt, int npages); void msm_gem_close_vma(struct msm_gem_address_space *aspace, struct msm_gem_vma *vma); Loading drivers/gpu/drm/msm/msm_gem.c +6 −2 Original line number Diff line number Diff line Loading @@ -391,6 +391,10 @@ static int msm_gem_pin_iova(struct drm_gem_object *obj, struct msm_gem_object *msm_obj = to_msm_bo(obj); struct msm_gem_vma *vma; struct page **pages; int prot = IOMMU_READ; if (!(msm_obj->flags & MSM_BO_GPU_READONLY)) prot |= IOMMU_WRITE; WARN_ON(!mutex_is_locked(&msm_obj->lock)); Loading @@ -405,8 +409,8 @@ static int msm_gem_pin_iova(struct drm_gem_object *obj, if (IS_ERR(pages)) return PTR_ERR(pages); return msm_gem_map_vma(aspace, vma, msm_obj->sgt, obj->size >> PAGE_SHIFT); return msm_gem_map_vma(aspace, vma, prot, msm_obj->sgt, obj->size >> PAGE_SHIFT); } /* get iova and pin it. Should have a matching put */ Loading drivers/gpu/drm/msm/msm_gem_vma.c +3 −2 Original line number Diff line number Diff line Loading @@ -68,7 +68,8 @@ void msm_gem_unmap_vma(struct msm_gem_address_space *aspace, int msm_gem_map_vma(struct msm_gem_address_space *aspace, struct msm_gem_vma *vma, struct sg_table *sgt, int npages) struct msm_gem_vma *vma, int prot, struct sg_table *sgt, int npages) { unsigned size = npages << PAGE_SHIFT; int ret = 0; Loading @@ -86,7 +87,7 @@ msm_gem_map_vma(struct msm_gem_address_space *aspace, if (aspace->mmu) ret = aspace->mmu->funcs->map(aspace->mmu, vma->iova, sgt, size, IOMMU_READ | IOMMU_WRITE); size, prot); if (ret) vma->mapped = false; Loading Loading
drivers/gpu/drm/msm/msm_drv.h +2 −1 Original line number Diff line number Diff line Loading @@ -250,7 +250,8 @@ void msm_gem_purge_vma(struct msm_gem_address_space *aspace, void msm_gem_unmap_vma(struct msm_gem_address_space *aspace, struct msm_gem_vma *vma); int msm_gem_map_vma(struct msm_gem_address_space *aspace, struct msm_gem_vma *vma, struct sg_table *sgt, int npages); struct msm_gem_vma *vma, int prot, struct sg_table *sgt, int npages); void msm_gem_close_vma(struct msm_gem_address_space *aspace, struct msm_gem_vma *vma); Loading
drivers/gpu/drm/msm/msm_gem.c +6 −2 Original line number Diff line number Diff line Loading @@ -391,6 +391,10 @@ static int msm_gem_pin_iova(struct drm_gem_object *obj, struct msm_gem_object *msm_obj = to_msm_bo(obj); struct msm_gem_vma *vma; struct page **pages; int prot = IOMMU_READ; if (!(msm_obj->flags & MSM_BO_GPU_READONLY)) prot |= IOMMU_WRITE; WARN_ON(!mutex_is_locked(&msm_obj->lock)); Loading @@ -405,8 +409,8 @@ static int msm_gem_pin_iova(struct drm_gem_object *obj, if (IS_ERR(pages)) return PTR_ERR(pages); return msm_gem_map_vma(aspace, vma, msm_obj->sgt, obj->size >> PAGE_SHIFT); return msm_gem_map_vma(aspace, vma, prot, msm_obj->sgt, obj->size >> PAGE_SHIFT); } /* get iova and pin it. Should have a matching put */ Loading
drivers/gpu/drm/msm/msm_gem_vma.c +3 −2 Original line number Diff line number Diff line Loading @@ -68,7 +68,8 @@ void msm_gem_unmap_vma(struct msm_gem_address_space *aspace, int msm_gem_map_vma(struct msm_gem_address_space *aspace, struct msm_gem_vma *vma, struct sg_table *sgt, int npages) struct msm_gem_vma *vma, int prot, struct sg_table *sgt, int npages) { unsigned size = npages << PAGE_SHIFT; int ret = 0; Loading @@ -86,7 +87,7 @@ msm_gem_map_vma(struct msm_gem_address_space *aspace, if (aspace->mmu) ret = aspace->mmu->funcs->map(aspace->mmu, vma->iova, sgt, size, IOMMU_READ | IOMMU_WRITE); size, prot); if (ret) vma->mapped = false; Loading