Allow using multiple SDMA schedulers only on GPUs where
we are allowed to do concurrent VM flushes.
This consideration is necessary because all GART windows
are mapped in VMID 0 (the kernel VMID) so each buffer
entity would flush VMID 0 concurrently.

Practically this means that we can't use multiple SDMA
engines for TTM on GFX6-8 and Navi 1x.

Fixes: 01c836788b37 ("drm/amdgpu: pass all the sdma scheds to amdgpu_mman")
Fixes: e4029f7a9474 ("drm/amdgpu: only use working sdma schedulers for ttm")
Cc: Pierre-Eric Pelloux-Prayer <[email protected]>
Signed-off-by: Timur Kristóf <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 74ada995bd8e..9eb55df6e692 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -2685,12 +2685,22 @@ void amdgpu_sdma_set_buffer_funcs_scheds(struct 
amdgpu_device *adev,
                return;
        }
 
-       /* Navi1x's workaround requires us to limit to a single SDMA sched
-        * for ttm.
-        */
        hub = &adev->vmhub[AMDGPU_GFXHUB(0)];
-       adev->mman.num_buffer_funcs_scheds = hub->sdma_invalidation_workaround ?
-               1 : n;
+
+       /*
+        * Allow using multiple SDMA schedulers only on GPUs where
+        * we are allowed to do concurrent VM flushes.
+        * This consideration is necessary because all GART windows
+        * are mapped in VMID 0 (the kernel VMID) so each buffer
+        * entity would flush VMID 0 concurrently.
+        *
+        * Also consider the SDMA invalidation workaround on
+        * Navi 1x GPUs, which also prevents us from using
+        * multiple SDMA engines on VMID 0 at the same time.
+        */
+       adev->mman.num_buffer_funcs_scheds =
+               (adev->vm_manager.concurrent_flush &&
+                !hub->sdma_invalidation_workaround) ? n : 1;
 }
 
 #if defined(CONFIG_DEBUG_FS)
-- 
2.55.0

Reply via email to