[Intel-gfx] [PATCH 8/8] drm/i915: Show waiters in i915_hangcheck_info
Chris Wilson
chris at chris-wilson.co.uk
Tue Oct 4 13:07:10 UTC 2016
On Tue, Oct 04, 2016 at 03:41:24PM +0300, Mika Kuoppala wrote:
> Chris Wilson <chris at chris-wilson.co.uk> writes:
>
> The commit message is missing.
>
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> > drivers/gpu/drm/i915/i915_debugfs.c | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> > index 9c95ce73f2aa..39b76c24c84f 100644
> > --- a/drivers/gpu/drm/i915/i915_debugfs.c
> > +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> > @@ -1343,6 +1343,9 @@ static int i915_hangcheck_info(struct seq_file *m, void *unused)
> > seq_printf(m, "Hangcheck inactive\n");
> >
> > for_each_engine_id(engine, dev_priv, id) {
> > + struct intel_breadcrumbs *b = &engine->breadcrumbs;
> > + struct rb_node *rb;
> > +
> > seq_printf(m, "%s:\n", engine->name);
> > seq_printf(m, "\tseqno = %x [current %x, last %x]\n",
> > engine->hangcheck.seqno,
> > @@ -1352,6 +1355,15 @@ static int i915_hangcheck_info(struct seq_file *m, void *unused)
> > yesno(intel_engine_has_waiter(engine)),
> > yesno(test_bit(engine->id,
> > &dev_priv->gpu_error.missed_irq_rings)));
> > + spin_lock(&b->lock);
> > + for (rb = rb_first(&b->waiters); rb; rb = rb_next(rb)) {
>
> The waiters are embeddded in requests? So we need the rcu_read_lock?
spin_lock outweighs rcu_read_lock, but the waiters are in a separate
per-engine list guarded by the breadcrumbs.lock, we need the spin lock
here.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list