diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 20 |
1 files changed, 1 insertions, 19 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c index fcad7e060938..4010aa6b4e53 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | |||
@@ -269,17 +269,6 @@ static void amdgpu_fence_check_lockup(struct work_struct *work) | |||
269 | if (amdgpu_fence_activity(ring)) { | 269 | if (amdgpu_fence_activity(ring)) { |
270 | wake_up_all(&ring->fence_drv.fence_queue); | 270 | wake_up_all(&ring->fence_drv.fence_queue); |
271 | } | 271 | } |
272 | else if (amdgpu_ring_is_lockup(ring)) { | ||
273 | /* good news we believe it's a lockup */ | ||
274 | dev_warn(ring->adev->dev, "GPU lockup (current fence id " | ||
275 | "0x%016llx last fence id 0x%016llx on ring %d)\n", | ||
276 | (uint64_t)atomic64_read(&fence_drv->last_seq), | ||
277 | fence_drv->sync_seq[ring->idx], ring->idx); | ||
278 | |||
279 | /* remember that we need an reset */ | ||
280 | ring->adev->needs_reset = true; | ||
281 | wake_up_all(&ring->fence_drv.fence_queue); | ||
282 | } | ||
283 | up_read(&ring->adev->exclusive_lock); | 272 | up_read(&ring->adev->exclusive_lock); |
284 | } | 273 | } |
285 | 274 | ||
@@ -380,7 +369,6 @@ static bool amdgpu_fence_enable_signaling(struct fence *f) | |||
380 | */ | 369 | */ |
381 | static int amdgpu_fence_ring_wait_seq(struct amdgpu_ring *ring, uint64_t seq) | 370 | static int amdgpu_fence_ring_wait_seq(struct amdgpu_ring *ring, uint64_t seq) |
382 | { | 371 | { |
383 | struct amdgpu_device *adev = ring->adev; | ||
384 | bool signaled = false; | 372 | bool signaled = false; |
385 | 373 | ||
386 | BUG_ON(!ring); | 374 | BUG_ON(!ring); |
@@ -391,8 +379,7 @@ static int amdgpu_fence_ring_wait_seq(struct amdgpu_ring *ring, uint64_t seq) | |||
391 | return 0; | 379 | return 0; |
392 | 380 | ||
393 | wait_event(ring->fence_drv.fence_queue, ( | 381 | wait_event(ring->fence_drv.fence_queue, ( |
394 | (signaled = amdgpu_fence_seq_signaled(ring, seq)) | 382 | (signaled = amdgpu_fence_seq_signaled(ring, seq)))); |
395 | || adev->needs_reset)); | ||
396 | 383 | ||
397 | if (signaled) | 384 | if (signaled) |
398 | return 0; | 385 | return 0; |
@@ -939,11 +926,6 @@ signed long amdgpu_fence_wait_any(struct amdgpu_device *adev, | |||
939 | if (amdgpu_test_signaled_any(array, count)) | 926 | if (amdgpu_test_signaled_any(array, count)) |
940 | break; | 927 | break; |
941 | 928 | ||
942 | if (adev->needs_reset) { | ||
943 | t = -EDEADLK; | ||
944 | break; | ||
945 | } | ||
946 | |||
947 | t = schedule_timeout(t); | 929 | t = schedule_timeout(t); |
948 | 930 | ||
949 | if (t > 0 && intr && signal_pending(current)) | 931 | if (t > 0 && intr && signal_pending(current)) |