diff mbox series

drm/i915/execlists: Mark up expected state during reset

Message ID 20191010083242.1387-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show
Series drm/i915/execlists: Mark up expected state during reset | expand

Commit Message

Chris Wilson Oct. 10, 2019, 8:32 a.m. UTC
Move the BUG_ON around slightly and add some explanations for each to
try and capture the expected state more carefully. We want to compare
the expected active state of our bookkeeping as compared to the tracked
HW state.

References: https://bugs.freedesktop.org/show_bug.cgi?id=111937
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Mika Kuoppala Oct. 10, 2019, 12:44 p.m. UTC | #1
Chris Wilson <chris@chris-wilson.co.uk> writes:

> Move the BUG_ON around slightly and add some explanations for each to
> try and capture the expected state more carefully. We want to compare
> the expected active state of our bookkeeping as compared to the tracked
> HW state.
>
> References: https://bugs.freedesktop.org/show_bug.cgi?id=111937
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

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

> ---
>  drivers/gpu/drm/i915/gt/intel_lrc.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index 7ea58335f04c..7c0d3c343520 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -2777,8 +2777,10 @@ static void __execlists_reset(struct intel_engine_cs *engine, bool stalled)
>  	if (!rq)
>  		goto unwind;
>  
> +	/* We still have requests in-flight; the engine should be active */
> +	GEM_BUG_ON(!intel_engine_pm_is_awake(engine));
> +
>  	ce = rq->hw_context;
> -	GEM_BUG_ON(i915_active_is_idle(&ce->active));
>  	GEM_BUG_ON(!i915_vma_is_pinned(ce->state));
>  
>  	/* Proclaim we have exclusive access to the context image! */
> @@ -2786,10 +2788,13 @@ static void __execlists_reset(struct intel_engine_cs *engine, bool stalled)
>  
>  	rq = active_request(rq);
>  	if (!rq) {
> +		/* Idle context; tidy up the ring so we can restart afresh */
>  		ce->ring->head = ce->ring->tail;
>  		goto out_replay;
>  	}
>  
> +	/* Context has requests still in-flight; it should not be idle! */
> +	GEM_BUG_ON(i915_active_is_idle(&ce->active));
>  	ce->ring->head = intel_ring_wrap(ce->ring, rq->head);
>  
>  	/*
> -- 
> 2.23.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 7ea58335f04c..7c0d3c343520 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -2777,8 +2777,10 @@  static void __execlists_reset(struct intel_engine_cs *engine, bool stalled)
 	if (!rq)
 		goto unwind;
 
+	/* We still have requests in-flight; the engine should be active */
+	GEM_BUG_ON(!intel_engine_pm_is_awake(engine));
+
 	ce = rq->hw_context;
-	GEM_BUG_ON(i915_active_is_idle(&ce->active));
 	GEM_BUG_ON(!i915_vma_is_pinned(ce->state));
 
 	/* Proclaim we have exclusive access to the context image! */
@@ -2786,10 +2788,13 @@  static void __execlists_reset(struct intel_engine_cs *engine, bool stalled)
 
 	rq = active_request(rq);
 	if (!rq) {
+		/* Idle context; tidy up the ring so we can restart afresh */
 		ce->ring->head = ce->ring->tail;
 		goto out_replay;
 	}
 
+	/* Context has requests still in-flight; it should not be idle! */
+	GEM_BUG_ON(i915_active_is_idle(&ce->active));
 	ce->ring->head = intel_ring_wrap(ce->ring, rq->head);
 
 	/*