On Tue, Oct 04, 2016 at 03:41:24PM +0300, Mika Kuoppala wrote: > Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > > The commit message is missing. > > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > --- > > 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 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx