drm/i915: Consolidate reset_request()
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 10 Jan 2017 17:22:42 +0000 (17:22 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 10 Jan 2017 20:49:29 +0000 (20:49 +0000)
Always reset the requests of the guilty context, including the hung
request that we tell the hardware to skip. This should help if the
reprogram fails entirely, but more importantly makes the guilty path
more uniform (and simplifies the subsequent patch to tweak the cancelled
requests).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170110172246.27297-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem.c

index 91d726f8bdfa7eda8ba85d014b1d0c16c731e2f7..fb2433175a3d80c46a6f734ddd694fe4b2c996a3 100644 (file)
@@ -2658,13 +2658,13 @@ static void i915_gem_reset_engine(struct intel_engine_cs *engine)
                ring_hung = false;
        }
 
-       if (ring_hung)
+       if (ring_hung) {
                i915_gem_context_mark_guilty(hung_ctx);
-       else
+               reset_request(request);
+       } else {
                i915_gem_context_mark_innocent(hung_ctx);
-
-       if (!ring_hung)
                return;
+       }
 
        DRM_DEBUG_DRIVER("resetting %s to restart from tail of request 0x%x\n",
                         engine->name, request->global_seqno);