[PATCH 17/30] drm/amdgpu: plumb tlb inv method in amdgpu_gmc_flush_gpu_tlb_gart()
Alex Deucher <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
Plumb the invalidation method into amdgpu_gmc_flush_gpu_tlb_gart(). Keep the current behavior. Signed-off-by: Alex Deucher <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c index 6af4ed2170b06..779f9b0974d2e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c @@ -719,15 +719,25 @@ void amdgpu_gmc_flush_gpu_tlb_gart(struct amdgpu_device *adev, { struct amdgpu_ring *ring; struct amdgpu_vmhub *hub = &adev->vmhub[vmhub]; + bool use_mmio; struct dma_fence *fence; struct amdgpu_job *job; int r; ring = to_amdgpu_ring(adev->mman.buffer_funcs_scheds[0]); - if (!hub->sdma_invalidation_workaround || - !adev->mman.buffer_funcs_enabled || !adev->ib_pool_ready || - !ring->sched.ready) { + switch (adev->gmc.gart_inv_method) { + case AMDGPU_TLB_INV_METHOD_MMIO: + default: + use_mmio = !hub->sdma_invalidation_workaround; + break; + case AMDGPU_TLB_INV_METHOD_SDMA: + use_mmio = false; + break; + } + + if (!adev->mman.buffer_funcs_enabled || + !adev->ib_pool_ready || !ring->sched.ready || use_mmio) { /* * A GPU reset should flush all TLBs anyway, so no need to do * this while one is ongoing. -- 2.55.0