* [PATCH 1/2] drm/msm: Disallow foreign mapping of _NO_SHARE
@ 2026-03-24 21:40 Rob Clark
2026-03-24 21:40 ` [PATCH 2/2] drm/msm: Fix VM_BIND UNMAP locking Rob Clark
0 siblings, 1 reply; 4+ messages in thread
From: Rob Clark @ 2026-03-24 21:40 UTC (permalink / raw)
To: dri-devel
Cc: linux-arm-msm, freedreno, Rob Clark, Dmitry Baryshkov,
Abhinav Kumar, Jessica Zhang, Sean Paul, Marijn Suijten,
David Airlie, Simona Vetter, open list
This restriction applies to mapping of _NO_SHARE objs in the kms vm as
well as importing/exporting BOs. Since the DPU has it's own VM, scanout
counts as "exporting" a BO from outside of it's host VM.
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
---
drivers/gpu/drm/msm/msm_gem_vma.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c
index 1c6b0920c0d8..68a8f8f592fb 100644
--- a/drivers/gpu/drm/msm/msm_gem_vma.c
+++ b/drivers/gpu/drm/msm/msm_gem_vma.c
@@ -373,6 +373,12 @@ msm_gem_vma_new(struct drm_gpuvm *gpuvm, struct drm_gem_object *obj,
struct msm_gem_vma *vma;
int ret;
+ /* _NO_SHARE objs cannot be mapped outside of their "host" vm: */
+ if ((to_msm_bo(obj)->flags & MSM_BO_NO_SHARE) &&
+ GEM_WARN_ON(obj->resv != drm_gpuvm_resv(gpuvm))) {
+ return ERR_PTR(-EINVAL);
+ }
+
drm_gpuvm_resv_assert_held(&vm->base);
vma = kzalloc(sizeof(*vma), GFP_KERNEL);
--
2.53.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] drm/msm: Fix VM_BIND UNMAP locking
2026-03-24 21:40 [PATCH 1/2] drm/msm: Disallow foreign mapping of _NO_SHARE Rob Clark
@ 2026-03-24 21:40 ` Rob Clark
2026-03-24 21:42 ` Rob Clark
0 siblings, 1 reply; 4+ messages in thread
From: Rob Clark @ 2026-03-24 21:40 UTC (permalink / raw)
To: dri-devel
Cc: linux-arm-msm, freedreno, Rob Clark, Dmitry Baryshkov,
Abhinav Kumar, Jessica Zhang, Sean Paul, Marijn Suijten,
David Airlie, Simona Vetter, open list
Wrong argument meant that the objs involved in UNMAP ops were not always
getting locked.
Since _NO_SHARE objs share a common resv with the VM (which is always
locked) this would only show up with non-_NO_SHARE BOs.
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
---
drivers/gpu/drm/msm/msm_gem_vma.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c
index 68a8f8f592fb..40892e206dbd 100644
--- a/drivers/gpu/drm/msm/msm_gem_vma.c
+++ b/drivers/gpu/drm/msm/msm_gem_vma.c
@@ -1251,7 +1251,7 @@ vm_bind_job_lock_objects(struct msm_vm_bind_job *job, struct drm_exec *exec)
case MSM_VM_BIND_OP_UNMAP:
ret = drm_gpuvm_sm_unmap_exec_lock(job->vm, exec,
op->iova,
- op->obj_offset);
+ op->range);
break;
case MSM_VM_BIND_OP_MAP:
case MSM_VM_BIND_OP_MAP_NULL: {
--
2.53.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] drm/msm: Fix VM_BIND UNMAP locking
2026-03-24 21:40 ` [PATCH 2/2] drm/msm: Fix VM_BIND UNMAP locking Rob Clark
@ 2026-03-24 21:42 ` Rob Clark
0 siblings, 0 replies; 4+ messages in thread
From: Rob Clark @ 2026-03-24 21:42 UTC (permalink / raw)
To: dri-devel
Cc: linux-arm-msm, freedreno, Dmitry Baryshkov, Abhinav Kumar,
Jessica Zhang, Sean Paul, Marijn Suijten, David Airlie,
Simona Vetter, open list
On Tue, Mar 24, 2026 at 2:40 PM Rob Clark <robin.clark@oss.qualcomm.com> wrote:
>
> Wrong argument meant that the objs involved in UNMAP ops were not always
> getting locked.
>
> Since _NO_SHARE objs share a common resv with the VM (which is always
> locked) this would only show up with non-_NO_SHARE BOs.
>
Closes: https://gitlab.freedesktop.org/drm/msm/-/issues/94
Fixes: 2e6a8a1fe2b2 ("drm/msm: Add VM_BIND ioctl")
> Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
> ---
> drivers/gpu/drm/msm/msm_gem_vma.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c
> index 68a8f8f592fb..40892e206dbd 100644
> --- a/drivers/gpu/drm/msm/msm_gem_vma.c
> +++ b/drivers/gpu/drm/msm/msm_gem_vma.c
> @@ -1251,7 +1251,7 @@ vm_bind_job_lock_objects(struct msm_vm_bind_job *job, struct drm_exec *exec)
> case MSM_VM_BIND_OP_UNMAP:
> ret = drm_gpuvm_sm_unmap_exec_lock(job->vm, exec,
> op->iova,
> - op->obj_offset);
> + op->range);
> break;
> case MSM_VM_BIND_OP_MAP:
> case MSM_VM_BIND_OP_MAP_NULL: {
> --
> 2.53.0
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] drm/msm: Fix VM_BIND UNMAP locking
2026-03-24 22:05 [PATCH 1/2] drm/msm: Disallow foreign mapping of _NO_SHARE Rob Clark
@ 2026-03-24 22:05 ` Rob Clark
0 siblings, 0 replies; 4+ messages in thread
From: Rob Clark @ 2026-03-24 22:05 UTC (permalink / raw)
To: dri-devel
Cc: linux-arm-msm, freedreno, Rob Clark, Victoria Brekenfeld,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, David Airlie, Simona Vetter, open list
Wrong argument meant that the objs involved in UNMAP ops were not always
getting locked.
Since _NO_SHARE objs share a common resv with the VM (which is always
locked) this would only show up with non-_NO_SHARE BOs.
Reported-by: Victoria Brekenfeld <victoria@system76.com>
Fixes: 2e6a8a1fe2b2 ("drm/msm: Add VM_BIND ioctl")
Closes: https://gitlab.freedesktop.org/drm/msm/-/issues/94
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
---
v2: Add tags
drivers/gpu/drm/msm/msm_gem_vma.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c
index 43d61e0919bd..953a2403f598 100644
--- a/drivers/gpu/drm/msm/msm_gem_vma.c
+++ b/drivers/gpu/drm/msm/msm_gem_vma.c
@@ -1251,7 +1251,7 @@ vm_bind_job_lock_objects(struct msm_vm_bind_job *job, struct drm_exec *exec)
case MSM_VM_BIND_OP_UNMAP:
ret = drm_gpuvm_sm_unmap_exec_lock(job->vm, exec,
op->iova,
- op->obj_offset);
+ op->range);
break;
case MSM_VM_BIND_OP_MAP:
case MSM_VM_BIND_OP_MAP_NULL: {
--
2.53.0
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-03-24 22:05 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-03-24 21:40 [PATCH 1/2] drm/msm: Disallow foreign mapping of _NO_SHARE Rob Clark
2026-03-24 21:40 ` [PATCH 2/2] drm/msm: Fix VM_BIND UNMAP locking Rob Clark
2026-03-24 21:42 ` Rob Clark
2026-03-24 22:05 [PATCH 1/2] drm/msm: Disallow foreign mapping of _NO_SHARE Rob Clark
2026-03-24 22:05 ` [PATCH 2/2] drm/msm: Fix VM_BIND UNMAP locking Rob Clark
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®