diff options
author | Eugeni Dodonov <eugeni.dodonov@intel.com> | 2012-02-01 23:29:03 -0200 |
---|---|---|
committer | Eugeni Dodonov <eugeni.dodonov@intel.com> | 2012-02-01 23:46:46 -0200 |
commit | 70bdf49059818f648ea24fb4e171e619a898cb88 (patch) | |
tree | 8ff2fa1ec508407a9ea75733ae8a39fa327025c7 | |
parent | b48cdbba5a08ac322322704e3ade1f153103f0a0 (diff) |
drm/i915: dump active clients when detecting a hung GPUhangcheck_test
This will avoid guessing about active processes possible causing the issue
and could help tracking individual processes objects.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
-rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 85281e9de6b..68a77ad0e34 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -895,6 +895,7 @@ static void i915_capture_error_state(struct drm_device *dev) struct drm_i915_error_state *error; unsigned long flags; int i, pipe; + struct drm_file *priv; spin_lock_irqsave(&dev_priv->error_lock, flags); error = dev_priv->first_error; @@ -909,6 +910,22 @@ static void i915_capture_error_state(struct drm_device *dev) return; } + DRM_INFO("dumping active drm clients:\n"); + list_for_each_entry(priv, &dev->filelist, lhead) { + struct pid *p; + struct task_struct *tsk = NULL; + + p = find_get_pid(priv->pid); + if (p) + tsk = get_pid_task(p, PIDTYPE_PID); + + DRM_INFO(" pid=%5d [%s] uid=%5d", + priv->pid, + (tsk) ? tsk->comm : "unknown", + priv->uid); + } + DRM_INFO("\n"); + DRM_INFO("capturing error event; look for more information in /debug/dri/%d/i915_error_state\n", dev->primary->index); |