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