Chris Wilson <ch...@chris-wilson.co.uk> writes:

> Although this state (execlists->active and engine->irq_posted) itself is
> not protected by the engine->timeline spinlock, it does conveniently
> ensure that irqs are disabled. We can use this to protect our
> manipulation of the state and so ensure that the next IRQ to arrive sees
> consistent state and (hopefully) ignores the reset engine.
>
> Suggested-by: Mika Kuoppala <mika.kuopp...@linux.intel.com>
> Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuopp...@linux.intel.com>
> Cc: Michel Thierry <michel.thie...@intel.com>

Reviewed-by: Mika Kuoppala <mika.kuopp...@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/intel_lrc.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c 
> b/drivers/gpu/drm/i915/intel_lrc.c
> index c1a3636e94fc..0482e54c94f0 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
> -- 
> 2.16.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to