summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Sierra <alex.sierra@amd.com>2023-04-24 14:27:26 -0500
committerAlex Deucher <alexander.deucher@amd.com>2023-06-09 09:39:06 -0400
commit6e87c4229513904295674b84b6e2d12951567191 (patch)
tree05a653ef80a828c1bd1d63ee6a49608708c338d9
parent17d62410aec363ec972f532fed5aba89b3f59ae7 (diff)
downloadlinux-stable-6e87c4229513904295674b84b6e2d12951567191.tar.gz
linux-stable-6e87c4229513904295674b84b6e2d12951567191.tar.bz2
linux-stable-6e87c4229513904295674b84b6e2d12951567191.zip
drm/amdgpu: improve wait logic at fence polling
Accomplish this by reading the seq number right away instead of sleep for 5us. There are certain cases where the fence is ready almost immediately. Sleep number granularity was also reduced as the majority of the kiq tlb flush takes between 2us to 6us. Signed-off-by: Alex Sierra <alex.sierra@amd.com> Acked-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
index 1994eafd3e71..b7d648dd0170 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
@@ -376,14 +376,11 @@ signed long amdgpu_fence_wait_polling(struct amdgpu_ring *ring,
uint32_t wait_seq,
signed long timeout)
{
- uint32_t seq;
-
- do {
- seq = amdgpu_fence_read(ring);
- udelay(5);
- timeout -= 5;
- } while ((int32_t)(wait_seq - seq) > 0 && timeout > 0);
+ while ((int32_t)(wait_seq - amdgpu_fence_read(ring)) > 0 && timeout > 0) {
+ udelay(2);
+ timeout -= 2;
+ }
return timeout > 0 ? timeout : 0;
}
/**