]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: Use system unbound workqueue for soft IH ring
authorTimur Kristóf <timur.kristof@gmail.com>
Wed, 13 May 2026 17:08:49 +0000 (19:08 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 17 Jun 2026 22:36:38 +0000 (18:36 -0400)
Allow the kernel to dispatch the soft IH work on other CPUs.

Otherwise it can happen that the soft IH ring fills up
before it actually starts processing anything, which
can easily happen with retry page faults, in which case
the CP repeatedly spams the CPU with a lot of interrupts.

This significantly improves retry page fault handling on
GPUs that don't have the filter CAM and must rely on
software based filtering.

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 3cdff3c8b93c2834977224d9c2b201fc334dd184)

drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c

index 40b8506ac66f9817d63276320bfb6b4670385348..53be764968e45fe06784f075f6162d715edc263b 100644 (file)
@@ -545,7 +545,7 @@ void amdgpu_irq_delegate(struct amdgpu_device *adev,
                         unsigned int num_dw)
 {
        amdgpu_ih_ring_write(adev, &adev->irq.ih_soft, entry->iv_entry, num_dw);
-       schedule_work(&adev->irq.ih_soft_work);
+       queue_work(system_unbound_wq, &adev->irq.ih_soft_work);
 }
 
 /**