[PATCH 28/30] drm/amdgpu/gmc12: use MES or SDMA for pasid TLB invalidation
Alex Deucher <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
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