aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2016-07-12 07:57:03 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-07-14 16:46:07 -0400
commit2ef004d984226fb6845481bc928ae37fb1dacc5e (patch)
treecf108cf6da68b481e69d42f939d00d23a42d7136
parent090b767e97fcdabe8ecd71cf43e7d39d94e6cfef (diff)
drm/amdgpu: always signal all fences
A little fallout from "drm/amdgpu: sanitize fence numbers", we sometimes need to signal all fences in the ring. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
index e320b5b73ac6..0b109aebfec6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
@@ -204,10 +204,13 @@ void amdgpu_fence_process(struct amdgpu_ring *ring)
204 if (seq != ring->fence_drv.sync_seq) 204 if (seq != ring->fence_drv.sync_seq)
205 amdgpu_fence_schedule_fallback(ring); 205 amdgpu_fence_schedule_fallback(ring);
206 206
207 if (unlikely(seq == last_seq))
208 return;
209
207 last_seq &= drv->num_fences_mask; 210 last_seq &= drv->num_fences_mask;
208 seq &= drv->num_fences_mask; 211 seq &= drv->num_fences_mask;
209 212
210 while (last_seq != seq) { 213 do {
211 struct fence *fence, **ptr; 214 struct fence *fence, **ptr;
212 215
213 ++last_seq; 216 ++last_seq;
@@ -228,7 +231,7 @@ void amdgpu_fence_process(struct amdgpu_ring *ring)
228 BUG(); 231 BUG();
229 232
230 fence_put(fence); 233 fence_put(fence);
231 } 234 } while (last_seq != seq);
232} 235}
233 236
234/** 237/**