diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c index c1a3636e94fc67ce4767b80af5c6224ddae48a0b..0482e54c94f0ac15f8fbeaed9ca388842e6b64c1 100644 --- a/drivers/gpu/drm/i915/intel_lrc.c +++ b/drivers/gpu/drm/i915/intel_lrc.c @@ -1618,10 +1618,10 @@ static void reset_common_ring(struct intel_engine_cs *engine, GEM_TRACE("%s seqno=%x\n", engine->name, request ? request->global_seqno : 0); - reset_irq(engine); - spin_lock_irqsave(&engine->timeline->lock, flags); + reset_irq(engine); + /* * Catch up with any missed context-switch interrupts. * @@ -1636,11 +1636,11 @@ static void reset_common_ring(struct intel_engine_cs *engine, /* Push back any incomplete requests for replay after the reset. */ __unwind_incomplete_requests(engine); - spin_unlock_irqrestore(&engine->timeline->lock, flags); - /* Mark all CS interrupts as complete */ execlists->active = 0; + spin_unlock_irqrestore(&engine->timeline->lock, flags); + /* If the request was innocent, we leave the request in the ELSP * and will try to replay it on restarting. The context image may * have been corrupted by the reset, in which case we may have