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 <[email protected]>

Reviewed-by: Christian König <[email protected]>

> ---
>  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);
>  }
>  

Reply via email to