Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > Now that we have a common engine state pretty printer, we can use that > instead of the adhoc information printed when we miss a breadcrumb. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> > Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_breadcrumbs.c | 11 +++++------ > drivers/gpu/drm/i915/intel_engine_cs.c | 6 ++++++ > 2 files changed, 11 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_breadcrumbs.c b/drivers/gpu/drm/i915/intel_breadcrumbs.c > index 4de054f8c1ba..1e4d2978fb86 100644 > --- a/drivers/gpu/drm/i915/intel_breadcrumbs.c > +++ b/drivers/gpu/drm/i915/intel_breadcrumbs.c > @@ -64,12 +64,11 @@ static unsigned long wait_timeout(void) > > static noinline void missed_breadcrumb(struct intel_engine_cs *engine) > { > - DRM_DEBUG_DRIVER("%s missed breadcrumb at %pS, irq posted? %s, current seqno=%x, last=%x\n", > - engine->name, __builtin_return_address(0), > - yesno(test_bit(ENGINE_IRQ_BREADCRUMB, > - &engine->irq_posted)), > - intel_engine_get_seqno(engine), > - intel_engine_last_submit(engine)); > + struct drm_printer p = drm_debug_printer(__func__); > + > + DRM_DEBUG_DRIVER("%s missed breadcrumb at %pS\n", > + engine->name, __builtin_return_address(0)); > + intel_engine_dump(engine, &p); We are holding rb_lock while we enter and the dump will retake it. We also should add proper asserts to intel_engine_dump that we notice immediately if we try to dump on wrong context. -Mika > > set_bit(engine->id, &engine->i915->gpu_error.missed_irq_rings); > } > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c > index 6997306be0d2..f22dc452030f 100644 > --- a/drivers/gpu/drm/i915/intel_engine_cs.c > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c > @@ -1835,6 +1835,12 @@ void intel_engine_dump(struct intel_engine_cs *engine, struct drm_printer *m) > } > spin_unlock_irq(&b->rb_lock); > > + drm_printf(m, "IRQ? 0x%lx (breadcrumbs? %s) (execlists? %s)\n", > + engine->irq_posted, > + yesno(test_bit(ENGINE_IRQ_BREADCRUMB, > + &engine->irq_posted)), > + yesno(test_bit(ENGINE_IRQ_EXECLIST, > + &engine->irq_posted))); > drm_printf(m, "Idle? %s\n", yesno(intel_engine_is_idle(engine))); > drm_printf(m, "\n"); > } > -- > 2.15.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx