drm/msm: add internal MSM_BO_MAP_PRIV flag
authorJonathan Marek <jonathan@marek.ca>
Thu, 23 Apr 2020 21:09:14 +0000 (17:09 -0400)
committerRob Clark <robdclark@chromium.org>
Mon, 18 May 2020 16:26:33 +0000 (09:26 -0700)
This flag sets IOMMU_PRIV, which is required for some a6xx GMU objects.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Jordan Crouse <jcrouse@codeauorora.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/msm_gem.c
drivers/gpu/drm/msm/msm_gem.h

index d8f56a3..6277fde 100644 (file)
@@ -428,6 +428,9 @@ static int msm_gem_pin_iova(struct drm_gem_object *obj,
        if (!(msm_obj->flags & MSM_BO_GPU_READONLY))
                prot |= IOMMU_WRITE;
 
+       if (msm_obj->flags & MSM_BO_MAP_PRIV)
+               prot |= IOMMU_PRIV;
+
        WARN_ON(!mutex_is_locked(&msm_obj->lock));
 
        if (WARN_ON(msm_obj->madv != MSM_MADV_WILLNEED))
index 30584ea..972490b 100644 (file)
@@ -13,6 +13,7 @@
 
 /* Additional internal-use only BO flags: */
 #define MSM_BO_STOLEN        0x10000000    /* try to use stolen/splash memory */
+#define MSM_BO_MAP_PRIV      0x20000000    /* use IOMMU_PRIV when mapping */
 
 struct msm_gem_address_space {
        const char *name;