drm/i915: Double check hangcheck.seqno after reset
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 4 Oct 2016 20:11:29 +0000 (21:11 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 5 Oct 2016 07:40:06 +0000 (08:40 +0100)
Check that there was not a late recovery between us declaring the GPU
hung and processing the reset. If the GPU did recover by itself, let the
request remain on the active list and see if it hangs again!

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

index 0cae8acdf906deadff2ade59f3899f618e93e4ab..a89a88922448bbf283bafcc6ef22d4cb177450b9 100644 (file)
@@ -2589,6 +2589,9 @@ static void i915_gem_reset_engine(struct intel_engine_cs *engine)
                return;
 
        ring_hung = engine->hangcheck.score >= HANGCHECK_SCORE_RING_HUNG;
+       if (engine->hangcheck.seqno != intel_engine_get_seqno(engine))
+               ring_hung = false;
+
        i915_set_reset_status(request->ctx, ring_hung);
        if (!ring_hung)
                return;