]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/msm: Split out helper to get iommu prot flags
authorRob Clark <robdclark@chromium.org>
Sun, 29 Jun 2025 20:12:59 +0000 (13:12 -0700)
committerRob Clark <robin.clark@oss.qualcomm.com>
Sat, 5 Jul 2025 00:48:35 +0000 (17:48 -0700)
We'll re-use this in the vm_bind path.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
Tested-by: Antonino Maniscalco <antomani103@gmail.com>
Reviewed-by: Antonino Maniscalco <antomani103@gmail.com>
Patchwork: https://patchwork.freedesktop.org/patch/661484/

drivers/gpu/drm/msm/msm_gem.c
drivers/gpu/drm/msm/msm_gem.h

index 763bafcff4cc633b5aad7085cca6bb6df9b16329..20d5e4b4d057fca0cb7fe6b6c2023043e1ba1434 100644 (file)
@@ -462,10 +462,9 @@ static struct drm_gpuva *get_vma_locked(struct drm_gem_object *obj,
        return vma;
 }
 
-int msm_gem_pin_vma_locked(struct drm_gem_object *obj, struct drm_gpuva *vma)
+int msm_gem_prot(struct drm_gem_object *obj)
 {
        struct msm_gem_object *msm_obj = to_msm_bo(obj);
-       struct page **pages;
        int prot = IOMMU_READ;
 
        if (!(msm_obj->flags & MSM_BO_GPU_READONLY))
@@ -477,6 +476,15 @@ int msm_gem_pin_vma_locked(struct drm_gem_object *obj, struct drm_gpuva *vma)
        if (msm_obj->flags & MSM_BO_CACHED_COHERENT)
                prot |= IOMMU_CACHE;
 
+       return prot;
+}
+
+int msm_gem_pin_vma_locked(struct drm_gem_object *obj, struct drm_gpuva *vma)
+{
+       struct msm_gem_object *msm_obj = to_msm_bo(obj);
+       struct page **pages;
+       int prot = msm_gem_prot(obj);
+
        msm_gem_assert_locked(obj);
 
        pages = msm_gem_get_pages_locked(obj, MSM_MADV_WILLNEED);
index 892e4132fa72116265eff511a13eb79e42d6e144..a18872ab1393dd89d0e295d29fe09de3161df886 100644 (file)
@@ -158,6 +158,7 @@ struct msm_gem_object {
 #define to_msm_bo(x) container_of(x, struct msm_gem_object, base)
 
 uint64_t msm_gem_mmap_offset(struct drm_gem_object *obj);
+int msm_gem_prot(struct drm_gem_object *obj);
 int msm_gem_pin_vma_locked(struct drm_gem_object *obj, struct drm_gpuva *vma);
 void msm_gem_unpin_locked(struct drm_gem_object *obj);
 void msm_gem_unpin_active(struct drm_gem_object *obj);