]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdkfd: No need to suspend whole MES to evict process
authorHarish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Sun, 11 Jan 2026 21:53:18 +0000 (16:53 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 14 Jan 2026 19:28:59 +0000 (14:28 -0500)
Each queue of the process is individually removed and there is not need
to suspend whole mes. Suspending mes stops kernel mode queues also
causing unnecessary timeouts when running mixed work loads

Fixes: 079ae5118e1f ("drm/amdkfd: fix suspend/resume all calls in mes based eviction path")
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4765
Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c

index dc4b6d19dc10cc905dff99728571a51f49c1ebc8..28e8c4f46f69a455482b933877f0fb9327ebdc6f 100644 (file)
@@ -1211,14 +1211,8 @@ static int evict_process_queues_cpsch(struct device_queue_manager *dqm,
        pr_debug_ratelimited("Evicting process pid %d queues\n",
                            pdd->process->lead_thread->pid);
 
-       if (dqm->dev->kfd->shared_resources.enable_mes) {
+       if (dqm->dev->kfd->shared_resources.enable_mes)
                pdd->last_evict_timestamp = get_jiffies_64();
-               retval = suspend_all_queues_mes(dqm);
-               if (retval) {
-                       dev_err(dev, "Suspending all queues failed");
-                       goto out;
-               }
-       }
 
        /* Mark all queues as evicted. Deactivate all active queues on
         * the qpd.
@@ -1248,10 +1242,6 @@ static int evict_process_queues_cpsch(struct device_queue_manager *dqm,
                                              KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES :
                                              KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
                                              USE_DEFAULT_GRACE_PERIOD);
-       } else {
-               retval = resume_all_queues_mes(dqm);
-               if (retval)
-                       dev_err(dev, "Resuming all queues failed");
        }
 
 out: