Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > In preparation for the next patch, we want the engine to appear idle > after a reset (if there are no requests in flight). For execlists, this > entails clearing the active status on reset, it will be regenerated on > restarting the engine after the reset. In the process, note that a > couple of other status flags and checks could be moved into the > describing function. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_lrc.c | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c > index deeedfc9fe44..0af9488e4070 100644 > --- a/drivers/gpu/drm/i915/intel_lrc.c > +++ b/drivers/gpu/drm/i915/intel_lrc.c > @@ -1462,6 +1462,9 @@ static void enable_execlists(struct intel_engine_cs *engine) > I915_WRITE(RING_HWS_PGA(engine->mmio_base), > engine->status_page.ggtt_offset); > POSTING_READ(RING_HWS_PGA(engine->mmio_base)); > + > + /* Following the reset, we need to reload the CSB read/write pointers */ > + engine->execlists.csb_head = -1; > } > > static int gen8_init_common_ring(struct intel_engine_cs *engine) > @@ -1479,11 +1482,6 @@ static int gen8_init_common_ring(struct intel_engine_cs *engine) > enable_execlists(engine); > DRM_DEBUG_DRIVER("Execlists enabled for %s\n", engine->name); > > - GEM_BUG_ON(engine->id >= ARRAY_SIZE(gtiir)); > - > - execlists->csb_head = -1; > - execlists->active = 0; > - > /* After a GPU reset, we may have requests to replay */ > if (execlists->first) > tasklet_schedule(&execlists->tasklet); > @@ -1529,6 +1527,8 @@ static void reset_irq(struct intel_engine_cs *engine) > struct drm_i915_private *dev_priv = engine->i915; > int i; > > + GEM_BUG_ON(engine->id >= ARRAY_SIZE(gtiir)); > + > /* > * Clear any pending interrupt state. > * > @@ -1577,6 +1577,9 @@ static void reset_common_ring(struct intel_engine_cs *engine, > > spin_unlock_irqrestore(&engine->timeline->lock, flags); > > + /* Mark all CS interrupts as complete */ > + execlists->active = 0; > + > /* 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.15.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx