drm/amdgpu: always signal all fences
authorChristian König <christian.koenig@amd.com>
Tue, 12 Jul 2016 11:57:03 +0000 (13:57 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 14 Jul 2016 20:46:07 +0000 (16:46 -0400)
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>
drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c

index e320b5b73ac6191ec7015cce4469440befd32c9a..0b109aebfec6ddbd003aac9d782d4c9a2aede8df 100644 (file)
@@ -204,10 +204,13 @@ void amdgpu_fence_process(struct amdgpu_ring *ring)
        if (seq != ring->fence_drv.sync_seq)
                amdgpu_fence_schedule_fallback(ring);
 
+       if (unlikely(seq == last_seq))
+               return;
+
        last_seq &= drv->num_fences_mask;
        seq &= drv->num_fences_mask;
 
-       while (last_seq != seq) {
+       do {
                struct fence *fence, **ptr;
 
                ++last_seq;
@@ -228,7 +231,7 @@ void amdgpu_fence_process(struct amdgpu_ring *ring)
                        BUG();
 
                fence_put(fence);
-       }
+       } while (last_seq != seq);
 }
 
 /**