diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index d81eaf5f6b3e..81b10d85b738 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c | |||
@@ -755,9 +755,18 @@ static void cancel_requests(struct intel_engine_cs *engine) | |||
755 | /* Mark all submitted requests as skipped. */ | 755 | /* Mark all submitted requests as skipped. */ |
756 | list_for_each_entry(request, &engine->timeline.requests, link) { | 756 | list_for_each_entry(request, &engine->timeline.requests, link) { |
757 | GEM_BUG_ON(!request->global_seqno); | 757 | GEM_BUG_ON(!request->global_seqno); |
758 | if (!i915_request_completed(request)) | 758 | |
759 | dma_fence_set_error(&request->fence, -EIO); | 759 | if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, |
760 | &request->fence.flags)) | ||
761 | continue; | ||
762 | |||
763 | dma_fence_set_error(&request->fence, -EIO); | ||
760 | } | 764 | } |
765 | |||
766 | intel_write_status_page(engine, | ||
767 | I915_GEM_HWS_INDEX, | ||
768 | intel_engine_last_submit(engine)); | ||
769 | |||
761 | /* Remaining _unready_ requests will be nop'ed when submitted */ | 770 | /* Remaining _unready_ requests will be nop'ed when submitted */ |
762 | 771 | ||
763 | spin_unlock_irqrestore(&engine->timeline.lock, flags); | 772 | spin_unlock_irqrestore(&engine->timeline.lock, flags); |