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
>

Reply via email to