]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Jan 2026 10:21:19 +0000 (11:21 +0100)
[ Upstream commit 18dbcfb46f692e665c3fe3eee804e56c4eae53d6 ]

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>
(cherry picked from commit 3fd20580b96a6e9da65b94ac3b58ee288239b731)
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c

index 6e7bc983fc0b681ca621a82d2848b1ba32568980..36fb3db16572a4399cd4a6a622a11a05d03266cd 100644 (file)
@@ -1209,14 +1209,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.
@@ -1246,10 +1240,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: