Message ID | 20200421234127.27965-3-jonathan@marek.ca (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2,1/9] drm/msm: add msm_gem_get_and_pin_iova_range | expand |
On Tue, Apr 21, 2020 at 07:41:20PM -0400, Jonathan Marek wrote: > This flag sets IOMMU_PRIV, which is required for some a6xx GMU objects. The GMU doesn't _need_ privileged surfaces, but it sure is a good idea. As a bonus with the APRIV bit on some a6xx targets we can set all of the global buffers as privileged so people can't go out and overwrite the memstore any more. Reviewed-by: Jordan Crouse <jcrouse@codeauorora.org> > Signed-off-by: Jonathan Marek <jonathan@marek.ca> > --- > drivers/gpu/drm/msm/msm_gem.c | 3 +++ > drivers/gpu/drm/msm/msm_gem.h | 1 + > 2 files changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c > index d8f56a34c117..6277fde13df9 100644 > --- a/drivers/gpu/drm/msm/msm_gem.c > +++ b/drivers/gpu/drm/msm/msm_gem.c > @@ -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)) > diff --git a/drivers/gpu/drm/msm/msm_gem.h b/drivers/gpu/drm/msm/msm_gem.h > index 30584eaf8cc8..972490b14ba5 100644 > --- a/drivers/gpu/drm/msm/msm_gem.h > +++ b/drivers/gpu/drm/msm/msm_gem.h > @@ -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; > -- > 2.26.1 > > _______________________________________________ > Freedreno mailing list > Freedreno@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/freedreno
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index d8f56a34c117..6277fde13df9 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c @@ -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)) diff --git a/drivers/gpu/drm/msm/msm_gem.h b/drivers/gpu/drm/msm/msm_gem.h index 30584eaf8cc8..972490b14ba5 100644 --- a/drivers/gpu/drm/msm/msm_gem.h +++ b/drivers/gpu/drm/msm/msm_gem.h @@ -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;
This flag sets IOMMU_PRIV, which is required for some a6xx GMU objects. Signed-off-by: Jonathan Marek <jonathan@marek.ca> --- drivers/gpu/drm/msm/msm_gem.c | 3 +++ drivers/gpu/drm/msm/msm_gem.h | 1 + 2 files changed, 4 insertions(+)