From: Chris Wilson Date: Tue, 10 Jan 2017 17:22:44 +0000 (+0000) Subject: drm/i915: Set an error status for a resubmitted request X-Git-Tag: v4.14-rc1~674^2~37^2~525 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3c1b284759876785e31335d0f2278bfd507a1862;p=platform%2Fkernel%2Flinux-rpi3.git drm/i915: Set an error status for a resubmitted request Let userspace know if its request was resubmitted due to it being executed at the time of a global reset. In this case, the reset was for a guilty request on another engine, and this request was an innocent victim that will be re-executed upon restarting. However, since it was running at the time of the reset, we can not guarantee that it suffered no ill-effects from the reset (e.g. some context state may be lost, or some self-modifying fragment shaders will be restarted from the final state not their initial state), to let userspace know that it has been corrupted set a special value on the fence->error, -EAGAIN. If the request does hang on resubmission, the error will be overwritten with -EIO. Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin Cc: Mika Kuoppala Reviewed-by: Tvrtko Ursulin Link: http://patchwork.freedesktop.org/patch/msgid/20170110172246.27297-3-chris@chris-wilson.co.uk --- diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 324a498..94ad9eb 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2665,6 +2665,7 @@ static void i915_gem_reset_engine(struct intel_engine_cs *engine) reset_request(request); } else { i915_gem_context_mark_innocent(hung_ctx); + dma_fence_set_error(&request->fence, -EAGAIN); return; }