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

Reply via email to