diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c index 61fcf264c247..8a081e162d13 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | |||
@@ -22,6 +22,7 @@ | |||
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include "amdgpu.h" | 24 | #include "amdgpu.h" |
25 | #define MAX_KIQ_REG_WAIT 100000 | ||
25 | 26 | ||
26 | int amdgpu_allocate_static_csa(struct amdgpu_device *adev) | 27 | int amdgpu_allocate_static_csa(struct amdgpu_device *adev) |
27 | { | 28 | { |
@@ -128,10 +129,12 @@ uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg) | |||
128 | amdgpu_ring_commit(ring); | 129 | amdgpu_ring_commit(ring); |
129 | mutex_unlock(&kiq->ring_mutex); | 130 | mutex_unlock(&kiq->ring_mutex); |
130 | 131 | ||
131 | r = dma_fence_wait(f, false); | 132 | r = dma_fence_wait_timeout(f, false, msecs_to_jiffies(MAX_KIQ_REG_WAIT)); |
132 | if (r) | ||
133 | DRM_ERROR("wait for kiq fence error: %ld.\n", r); | ||
134 | dma_fence_put(f); | 133 | dma_fence_put(f); |
134 | if (r < 1) { | ||
135 | DRM_ERROR("wait for kiq fence error: %ld.\n", r); | ||
136 | return ~0; | ||
137 | } | ||
135 | 138 | ||
136 | val = adev->wb.wb[adev->virt.reg_val_offs]; | 139 | val = adev->wb.wb[adev->virt.reg_val_offs]; |
137 | 140 | ||
@@ -154,8 +157,8 @@ void amdgpu_virt_kiq_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v) | |||
154 | amdgpu_ring_commit(ring); | 157 | amdgpu_ring_commit(ring); |
155 | mutex_unlock(&kiq->ring_mutex); | 158 | mutex_unlock(&kiq->ring_mutex); |
156 | 159 | ||
157 | r = dma_fence_wait(f, false); | 160 | r = dma_fence_wait_timeout(f, false, msecs_to_jiffies(MAX_KIQ_REG_WAIT)); |
158 | if (r) | 161 | if (r < 1) |
159 | DRM_ERROR("wait for kiq fence error: %ld.\n", r); | 162 | DRM_ERROR("wait for kiq fence error: %ld.\n", r); |
160 | dma_fence_put(f); | 163 | dma_fence_put(f); |
161 | } | 164 | } |