]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amdgpu: fix amdgpu_userq_evict
authorChristian König <christian.koenig@amd.com>
Thu, 22 Jan 2026 14:27:25 +0000 (15:27 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 17 Mar 2026 14:33:39 +0000 (10:33 -0400)
Canceling the resume worker synchonized can deadlock because it can in
turn wait for the eviction worker through the userq_mutex.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Sunil Khatri <sunil.khatri@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c

index 7cdff206e7f39fa2f8e9fe3971ed1ac0ee6587fe..5619233e1b68e01468bcf0e5e3375a0a5fc8b177 100644 (file)
@@ -1331,13 +1331,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,