On Mon, Feb 2, 2026 at 8:02 AM Christian König <[email protected]> wrote: > > Canceling the delayed synchonized can deadlock!
Please clarify why it can deadlock. E.g., Canceling the delayed work synchonized can deadlock because we already hold the userq_mutex from the caller. Reviewed-by: Alex Deucher <[email protected]> > > Signed-off-by: Christian König <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > index 8feeaeea1c36..af3922e9caea 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > @@ -1337,13 +1337,8 @@ amdgpu_userq_evict(struct amdgpu_userq_mgr *uq_mgr, > /* Signal current eviction fence */ > amdgpu_eviction_fence_signal(evf_mgr, ev_fence); > > - if (evf_mgr->fd_closing) { > - cancel_delayed_work_sync(&uq_mgr->resume_work); > - return; > - } > - > - /* Schedule a resume work */ > - schedule_delayed_work(&uq_mgr->resume_work, 0); > + if (!evf_mgr->fd_closing) > + schedule_delayed_work(&uq_mgr->resume_work, 0); > } > > int amdgpu_userq_mgr_init(struct amdgpu_userq_mgr *userq_mgr, struct > drm_file *file_priv, > -- > 2.43.0 >
