Use SDMA or MES rather than MMIO.  The avoids the need to
disallow gfxoff when invalidating.  Default to SDMA and
then use MES if the MES firmware supports it.

Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c | 1 +
 drivers/gpu/drm/amd/amdgpu/mes_v12_0.c | 4 ++++
 drivers/gpu/drm/amd/amdgpu/mes_v12_1.c | 4 ++++
 3 files changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c 
b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
index 6ec5798494be1..67eb1b595abe0 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
@@ -1061,6 +1061,7 @@ static int gmc_v12_0_hw_init(struct amdgpu_ip_block 
*ip_block)
        int r;
        struct amdgpu_device *adev = ip_block->adev;
 
+       adev->gmc.pasid_inv_method = AMDGPU_TLB_INV_METHOD_SDMA;
        adev->gmc.gart_inv_method = AMDGPU_TLB_INV_METHOD_SDMA;
 
        /* The sequence of these two function calls matters.*/
diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c 
b/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
index ee72afdb0a1d3..dd68db14c43f6 100644
--- a/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
@@ -2097,6 +2097,10 @@ static int mes_v12_0_hw_init(struct amdgpu_ip_block 
*ip_block)
        adev->gfx.kiq[0].ring.sched.ready = false;
        adev->mes.ring[0].sched.ready = true;
 
+       if (adev->enable_uni_mes &&
+           (adev->mes.sched_version & AMDGPU_MES_VERSION_MASK) >= 0x84)
+               adev->gmc.pasid_inv_method = AMDGPU_TLB_INV_METHOD_MES;
+
        return 0;
 
 failure:
diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c 
b/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c
index f1098118d5c05..5eac7615efff5 100644
--- a/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/mes_v12_1.c
@@ -1962,6 +1962,10 @@ static int mes_v12_1_hw_init(struct amdgpu_ip_block 
*ip_block)
                        return r;
        }
 
+       if (adev->enable_uni_mes &&
+           (adev->mes.sched_version & AMDGPU_MES_VERSION_MASK) >= 0x6f)
+               adev->gmc.pasid_inv_method = AMDGPU_TLB_INV_METHOD_MES;
+
        return 0;
 }
 
-- 
2.55.0

Reply via email to