[Intel-gfx] [PATCH 03/34] drm/i915: Show all active engines on hangcheck

Chris Wilson chris at chris-wilson.co.uk
Tue Jan 22 12:42:14 UTC 2019


Quoting Mika Kuoppala (2019-01-22 12:33:00)
> Chris Wilson <chris at chris-wilson.co.uk> writes:
> 
> > This turns out to be quite useful if one happens to be debugging
> > semaphore deadlocks.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> >  drivers/gpu/drm/i915/intel_hangcheck.c | 15 +++++++++++----
> >  1 file changed, 11 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_hangcheck.c b/drivers/gpu/drm/i915/intel_hangcheck.c
> > index 7dc11fcb13de..741441daae32 100644
> > --- a/drivers/gpu/drm/i915/intel_hangcheck.c
> > +++ b/drivers/gpu/drm/i915/intel_hangcheck.c
> > @@ -195,10 +195,6 @@ static void hangcheck_accumulate_sample(struct intel_engine_cs *engine,
> >               break;
> >  
> >       case ENGINE_DEAD:
> > -             if (GEM_SHOW_DEBUG()) {
> > -                     struct drm_printer p = drm_debug_printer("hangcheck");
> > -                     intel_engine_dump(engine, &p, "%s\n", engine->name);
> > -             }
> >               break;
> >  
> >       default:
> > @@ -285,6 +281,17 @@ static void i915_hangcheck_elapsed(struct work_struct *work)
> >                       wedged |= intel_engine_flag(engine);
> >       }
> >  
> > +     if (GEM_SHOW_DEBUG() && (hung | stuck)) {
> > +             struct drm_printer p = drm_debug_printer("hangcheck");
> > +
> > +             for_each_engine(engine, dev_priv, id) {
> > +                     if (intel_engine_is_idle(engine))
> > +                             continue;
> 
> Looks rather harmless tho there is that local_bh_disable.
> I was pondering if it was worthwhile to determine idle here
> with more lightweight approach, but as we already use
> the exact same method on determining hangcheck action, lets
> stick to this as it is should be then in parity with the
> engine action we got earlier.

Plus it's only for glancing at the dmesg; the error state is meant to be
the be-all-end-all of debugging information. I just find it convenient
when watching netconsole and most kernel bugs can be deduced from the
register state itself.
-Chris


More information about the Intel-gfx mailing list