[Intel-gfx] [PATCH 8/8] drm/i915: Show waiters in i915_hangcheck_info

Mika Kuoppala mika.kuoppala at linux.intel.com
Tue Oct 4 12:41:24 UTC 2016


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?

-Mika


> +			struct intel_wait *w = container_of(rb, typeof(*w), node);
> +
> +			seq_printf(m, "\t%s [%d] waiting for %x\n",
> +				   w->tsk->comm, w->tsk->pid, w->seqno);
> +		}
> +		spin_unlock(&b->lock);
> +
>  		seq_printf(m, "\tACTHD = 0x%08llx [current 0x%08llx]\n",
>  			   (long long)engine->hangcheck.acthd,
>  			   (long long)acthd[id]);
> -- 
> 2.9.3
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list