Re: [PATCH] drm/amdgpu/userq: cancel reset work while tear down in progress

2026-05-12 Thread Christian König
On 5/12/26 11:28, Sunil Khatri wrote:
> While tear down of a userq_mgr is happening when all the queues
> are free we should cancel any reset work if pending before exiting.
> 
> Signed-off-by: Sunil Khatri 

Reviewed-by: Christian König 

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 8 
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
> index 0a1fc45f5b4e..6000dee5ee3d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
> @@ -1346,6 +1346,14 @@ void amdgpu_userq_mgr_fini(struct amdgpu_userq_mgr 
> *userq_mgr)
>   }
>  
>   xa_destroy(&userq_mgr->userq_xa);
> +
> + /*
> +  * Drain any in-flight reset_work. By this point all queues are freed
> +  * and userq_count is 0, so if reset_work starts now it exits early.
> +  * We still need to wait in case it was already executing gpu_recover.
> +  */
> + cancel_work_sync(&userq_mgr->reset_work);
> +
>   mutex_destroy(&userq_mgr->userq_mutex);
>  }
>  



[PATCH] drm/amdgpu/userq: cancel reset work while tear down in progress

2026-05-12 Thread Sunil Khatri
While tear down of a userq_mgr is happening when all the queues
are free we should cancel any reset work if pending before exiting.

Signed-off-by: Sunil Khatri 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 8 
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
index 0a1fc45f5b4e..6000dee5ee3d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
@@ -1346,6 +1346,14 @@ void amdgpu_userq_mgr_fini(struct amdgpu_userq_mgr 
*userq_mgr)
}
 
xa_destroy(&userq_mgr->userq_xa);
+
+   /*
+* Drain any in-flight reset_work. By this point all queues are freed
+* and userq_count is 0, so if reset_work starts now it exits early.
+* We still need to wait in case it was already executing gpu_recover.
+*/
+   cancel_work_sync(&userq_mgr->reset_work);
+
mutex_destroy(&userq_mgr->userq_mutex);
 }
 
-- 
2.34.1