Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > Since the advent of execlists, the HW no longer executes from a single > statically assigned ring, but instead switches to a different ring for > each context (logical ringbuffer contexts as it is called). So a good way > to tally the executing context against what we have queued is by > comparing the RING_START register against our requests. Make it so. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gpu_error.c | 5 +++-- > drivers/gpu/drm/i915/i915_gpu_error.h | 1 + > drivers/gpu/drm/i915/intel_engine_cs.c | 5 +++-- > 3 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c > index c0127965b578..3c5a47cbd12d 100644 > --- a/drivers/gpu/drm/i915/i915_gpu_error.c > +++ b/drivers/gpu/drm/i915/i915_gpu_error.c > @@ -409,11 +409,11 @@ static void error_print_request(struct drm_i915_error_state_buf *m, > if (!erq->seqno) > return; > > - err_printf(m, "%s pid %d, ban score %d, seqno %8x:%08x, prio %d, emitted %dms ago, head %08x, tail %08x\n", > + err_printf(m, "%s pid %d, ban score %d, seqno %8x:%08x, prio %d, emitted %dms ago, start %08x, head %08x, tail %08x\n", > prefix, erq->pid, erq->ban_score, > erq->context, erq->seqno, erq->sched_attr.priority, > jiffies_to_msecs(jiffies - erq->jiffies), > - erq->head, erq->tail); > + erq->start, erq->head, erq->tail); > } > > static void error_print_context(struct drm_i915_error_state_buf *m, > @@ -1282,6 +1282,7 @@ static void record_request(struct i915_request *request, > erq->ban_score = atomic_read(&request->ctx->ban_score); > erq->seqno = request->global_seqno; > erq->jiffies = request->emitted_jiffies; > + erq->start = i915_ggtt_offset(request->ring->vma); > erq->head = request->head; > erq->tail = request->tail; > > diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h > index 5d6fdcbc092c..ad7c2328b31c 100644 > --- a/drivers/gpu/drm/i915/i915_gpu_error.h > +++ b/drivers/gpu/drm/i915/i915_gpu_error.h > @@ -150,6 +150,7 @@ struct i915_gpu_state { > u32 context; > int ban_score; > u32 seqno; > + u32 start; > u32 head; > u32 tail; > struct i915_sched_attr sched_attr; > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c > index 238c8d3da041..9164e6d665f8 100644 > --- a/drivers/gpu/drm/i915/intel_engine_cs.c > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c > @@ -1278,8 +1278,9 @@ static void intel_engine_print_registers(const struct intel_engine_cs *engine, > char hdr[80]; > > snprintf(hdr, sizeof(hdr), > - "\t\tELSP[%d] count=%d, rq: ", > - idx, count); > + "\t\tELSP[%d] count=%d, ring->start=%08x, rq: ", > + idx, count, > + i915_ggtt_offset(rq->ring->vma)); > print_request(m, rq, hdr); > } else { > drm_printf(m, "\t\tELSP[%d] idle\n", idx); > -- > 2.17.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx