[PATCH 3/4] drm/amdgpu: drop the busy wait for GMC v9 TLB invalidations
Deng, Emily
Emily.Deng at amd.com
Thu Oct 25 09:40:02 UTC 2018
Add Wentao.
Best wishes
Emily Deng
>-----Original Message-----
>From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of
>Christian König
>Sent: Thursday, October 25, 2018 5:15 PM
>To: amd-gfx at lists.freedesktop.org
>Subject: [PATCH 3/4] drm/amdgpu: drop the busy wait for GMC v9 TLB
>invalidations
>
>This code is not performance critical.
>
>Signed-off-by: Christian König <christian.koenig at amd.com>
>---
> drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 26 ++++----------------------
> 1 file changed, 4 insertions(+), 22 deletions(-)
>
>diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
>b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
>index 7dee74f1937c..ff5e5f69b403 100644
>--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
>+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
>@@ -350,35 +350,17 @@ static void gmc_v9_0_flush_gpu_tlb(struct
>amdgpu_device *adev,
> }
>
> spin_lock(&adev->gmc.invalidate_lock);
>-
> WREG32_NO_KIQ(hub->vm_inv_eng0_req + eng, tmp);
>-
>- /* Busy wait for ACK.*/
>- for (j = 0; j < 100; j++) {
>- tmp = RREG32_NO_KIQ(hub->vm_inv_eng0_ack +
>eng);
>- tmp &= 1 << vmid;
>- if (tmp)
>- break;
>- cpu_relax();
>- }
>- if (j < 100) {
>- spin_unlock(&adev->gmc.invalidate_lock);
>- continue;
>- }
>-
>- /* Wait for ACK with a delay.*/
> for (j = 0; j < adev->usec_timeout; j++) {
> tmp = RREG32_NO_KIQ(hub->vm_inv_eng0_ack +
>eng);
>- tmp &= 1 << vmid;
>- if (tmp)
>+ if (tmp & (1 << vmid))
> break;
> udelay(1);
> }
>- if (j < adev->usec_timeout) {
>- spin_unlock(&adev->gmc.invalidate_lock);
>- continue;
>- }
> spin_unlock(&adev->gmc.invalidate_lock);
>+ if (j < adev->usec_timeout)
>+ continue;
>+
> DRM_ERROR("Timeout waiting for VM flush ACK!\n");
> }
> }
>--
>2.14.1
>
>_______________________________________________
>amd-gfx mailing list
>amd-gfx at lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list