On Wed, Jan 06, 2016 at 03:09:41PM +0000, Michel Thierry wrote: > On 1/5/2016 6:30 PM, Ben Widawsky wrote: > >This is a useful thing to have around as a function because the mechanism may > >change in the future. > > > >There is a net increase in LOC here, and it will continue to be the case on GEN8 > >and GEN9 - but future GENs may have an alternate mechanism for doing this. > > > >Signed-off-by: Ben Widawsky <benjamin.widawsky@xxxxxxxxx> > >--- > > drivers/gpu/drm/i915/intel_lrc.c | 19 ++++++++++++++++--- > > 1 file changed, 16 insertions(+), 3 deletions(-) > > > >diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c > >index 14affaa..23839ff 100644 > >--- a/drivers/gpu/drm/i915/intel_lrc.c > >+++ b/drivers/gpu/drm/i915/intel_lrc.c > >@@ -496,6 +496,19 @@ static bool execlists_check_remove_request(struct intel_engine_cs *ring, > > return false; > > } > > > >+static void get_context_status(struct intel_engine_cs *ring, > >+ u8 read_pointer, > >+ u32 *status, u32 *context_id) > >+{ > >+ struct drm_i915_private *dev_priv = ring->dev->dev_private; > >+ > >+ if (WARN_ON(read_pointer >= GEN8_CSB_ENTRIES)) > >+ return; > >+ > >+ *status = I915_READ(RING_CONTEXT_STATUS_BUF_LO(ring, read_pointer)); > >+ *context_id = I915_READ(RING_CONTEXT_STATUS_BUF_HI(ring, read_pointer)); > >+} > >+ > > /** > > * intel_lrc_irq_handler() - handle Context Switch interrupts > > * @ring: Engine Command Streamer to handle. > >@@ -523,9 +536,9 @@ void intel_lrc_irq_handler(struct intel_engine_cs *ring) > > spin_lock(&ring->execlist_lock); > > > > while (read_pointer < write_pointer) { > >- read_pointer++; > >- status = I915_READ(RING_CONTEXT_STATUS_BUF_LO(ring, read_pointer % GEN8_CSB_ENTRIES)); > >- status_id = I915_READ(RING_CONTEXT_STATUS_BUF_HI(ring, read_pointer % GEN8_CSB_ENTRIES)); > >+ > >+ get_context_status(ring, ++read_pointer % GEN8_CSB_ENTRIES, > >+ &status, &status_id); > > > > if (status & GEN8_CTX_STATUS_IDLE_ACTIVE) > > continue; > >-- > >2.6.4 > > Future GENs may need a completely new lrc_irq_handler anyway. s/Future/Current/ -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx