Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > Count the number of requests in a ring for the user and show who > submitted them. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_debugfs.c | 39 ++++++++++++++++++++++++------------- > 1 file changed, 26 insertions(+), 13 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c > index 9edc3f692256..6ff12ca147aa 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -671,31 +671,44 @@ static int i915_gem_request_info(struct seq_file *m, void *data) > struct drm_device *dev = node->minor->dev; > struct drm_i915_private *dev_priv = dev->dev_private; > struct intel_engine_cs *ring; > - struct drm_i915_gem_request *gem_request; > - int ret, count, i; > + struct drm_i915_gem_request *rq; > + int ret, any, i; > > ret = mutex_lock_interruptible(&dev->struct_mutex); > if (ret) > return ret; > > - count = 0; > + any = 0; > for_each_ring(ring, dev_priv, i) { > - if (list_empty(&ring->request_list)) > + int count; > + > + count = 0; > + list_for_each_entry(rq, &ring->request_list, list) > + count++; > + if (count == 0) > continue; > > - seq_printf(m, "%s requests:\n", ring->name); > - list_for_each_entry(gem_request, > - &ring->request_list, > - list) { > - seq_printf(m, " %x @ %d\n", > - gem_request->seqno, > - (int) (jiffies - gem_request->emitted_jiffies)); > + seq_printf(m, "%s requests: %d\n", ring->name, count); > + list_for_each_entry(rq, &ring->request_list, list) { > + struct task_struct *task; > + > + rcu_read_lock(); > + task = NULL; > + if (rq->pid) > + task = pid_task(rq->pid, PIDTYPE_PID); > + seq_printf(m, " %x @ %d: %s [%d]\n", > + rq->seqno, > + (int) (jiffies - rq->emitted_jiffies), > + task ? task->comm : "<unknown>", > + task ? task->pid : -1); > + rcu_read_unlock(); > } > - count++; > + > + any++; > } > mutex_unlock(&dev->struct_mutex); > > - if (count == 0) > + if (any == 0) > seq_puts(m, "No requests\n"); > > return 0; > -- > 2.1.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx