Re: [PATCH] drm/amdgpu/userq: cancel reset work while tear down in progress
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
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
