drivers/gpu/drm/msm/msm_gem_submit.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
Update last_fence in the vm-bind path instead of kernel managed path.
last_fence is used to wait for work to finish in vm_bind contexts but not
used for kernel managed contexts.
This fixes a bug where last_fence is not waited on context close leading
to faults as resources are freed while in use.
Fixes: 92395af63a99 ("drm/msm: Add VM_BIND submitqueue")
---
Signed-off-by: Anna Maniscalco <anna.maniscalco2000@gmail.com>
---
Changes in v2:
- Only update last_fence on vm_bind path
- Link to v1: https://lore.kernel.org/r/20251010-close_fence_wait_fix-v1-1-fd3e394dcadd@gmail.com
---
drivers/gpu/drm/msm/msm_gem_submit.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c
index 3ab3b27134f93b01236fec5833a18a6e2ad2cf5e..75d9f357437006ff261db148901e176eae670d41 100644
--- a/drivers/gpu/drm/msm/msm_gem_submit.c
+++ b/drivers/gpu/drm/msm/msm_gem_submit.c
@@ -414,6 +414,11 @@ static void submit_attach_object_fences(struct msm_gem_submit *submit)
submit->user_fence,
DMA_RESV_USAGE_BOOKKEEP,
DMA_RESV_USAGE_BOOKKEEP);
+
+ last_fence = vm->last_fence;
+ vm->last_fence = dma_fence_unwrap_merge(submit->user_fence, last_fence);
+ dma_fence_put(last_fence);
+
return;
}
@@ -427,10 +432,6 @@ static void submit_attach_object_fences(struct msm_gem_submit *submit)
dma_resv_add_fence(obj->resv, submit->user_fence,
DMA_RESV_USAGE_READ);
}
-
- last_fence = vm->last_fence;
- vm->last_fence = dma_fence_unwrap_merge(submit->user_fence, last_fence);
- dma_fence_put(last_fence);
}
static int submit_bo(struct msm_gem_submit *submit, uint32_t idx,
---
base-commit: b5bad77e1e3c7249e4c0c88f98477e1ee7669b63
change-id: 20251009-close_fence_wait_fix-00e1c2521eee
Best regards,
--
Anna Maniscalco <anna.maniscalco2000@gmail.com>
On 10.10.2025 17:39, Anna Maniscalco wrote:
> Update last_fence in the vm-bind path instead of kernel managed path.
>
> last_fence is used to wait for work to finish in vm_bind contexts but not
> used for kernel managed contexts.
>
> This fixes a bug where last_fence is not waited on context close leading
> to faults as resources are freed while in use.
>
> Fixes: 92395af63a99 ("drm/msm: Add VM_BIND submitqueue")
> ---
> Signed-off-by: Anna Maniscalco <anna.maniscalco2000@gmail.com>
> ---
> Changes in v2:
> - Only update last_fence on vm_bind path
> - Link to v1: https://lore.kernel.org/r/20251010-close_fence_wait_fix-v1-1-fd3e394dcadd@gmail.com
> ---
> drivers/gpu/drm/msm/msm_gem_submit.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c
> index 3ab3b27134f93b01236fec5833a18a6e2ad2cf5e..75d9f357437006ff261db148901e176eae670d41 100644
> --- a/drivers/gpu/drm/msm/msm_gem_submit.c
> +++ b/drivers/gpu/drm/msm/msm_gem_submit.c
> @@ -414,6 +414,11 @@ static void submit_attach_object_fences(struct msm_gem_submit *submit)
> submit->user_fence,
> DMA_RESV_USAGE_BOOKKEEP,
> DMA_RESV_USAGE_BOOKKEEP);
> +
> + last_fence = vm->last_fence;
> + vm->last_fence = dma_fence_unwrap_merge(submit->user_fence, last_fence);
> + dma_fence_put(last_fence);
> +
> return;
> }
>
> @@ -427,10 +432,6 @@ static void submit_attach_object_fences(struct msm_gem_submit *submit)
> dma_resv_add_fence(obj->resv, submit->user_fence,
> DMA_RESV_USAGE_READ);
> }
> -
> - last_fence = vm->last_fence;
> - vm->last_fence = dma_fence_unwrap_merge(submit->user_fence, last_fence);
> - dma_fence_put(last_fence);
> }
>
> static int submit_bo(struct msm_gem_submit *submit, uint32_t idx,
>
> ---
> base-commit: b5bad77e1e3c7249e4c0c88f98477e1ee7669b63
> change-id: 20251009-close_fence_wait_fix-00e1c2521eee
>
> Best regards,
Hi!
Since 6.17 I'm seeing gpu faults that were not present in 6.16, they
look like [1].
I was hoping this patch can fix it, because faults go away if I comment
out put_iova_spaces() inside msm_gem_close(), and this patch mentions
close path and faults together, ... but no. Perhaps something else is
wrong somewhere?
[1] https://paste.sr.ht/~minlexx/09a9b3d4bfff3e7be3e96cd88fe8cf34621cb655
--
Regards,
Alexey Minnekhanov
On 10/10/25 4:39 PM, Anna Maniscalco wrote:
> Update last_fence in the vm-bind path instead of kernel managed path.
>
> last_fence is used to wait for work to finish in vm_bind contexts but not
> used for kernel managed contexts.
>
> This fixes a bug where last_fence is not waited on context close leading
> to faults as resources are freed while in use.
>
> Fixes: 92395af63a99 ("drm/msm: Add VM_BIND submitqueue")
> ---
> Signed-off-by: Anna Maniscalco <anna.maniscalco2000@gmail.com>
Your sign-off will be removed by git, as it appears below the '---' line
Konrad
© 2016 - 2025 Red Hat, Inc.