aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2013-10-10 04:37:19 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-10-10 06:48:02 -0400
commit09e14bf3ba4b72be4d57d99e3620beae4fb1ecd8 (patch)
treebcfd167ae9857677377dfadb403bff0174a7ac70
parent4c445e0ebc648ee42c0d21713b8f76597854d47a (diff)
drm/i915: Capture the initial error-state when kicking stuck rings
We lost the ability to capture the first error for a stuck ring in the recent hangcheck robustification. Whilst both error states are interesting (why does the GPU not recover is also essential to debug), our primary goal is to fix the initial hang and so we need to capture the first error state upon taking hangcheck action. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 418ad642c742..36279202ddc0 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1988,6 +1988,7 @@ ring_stuck(struct intel_ring_buffer *ring, u32 acthd)
1988 if (tmp & RING_WAIT) { 1988 if (tmp & RING_WAIT) {
1989 DRM_ERROR("Kicking stuck wait on %s\n", 1989 DRM_ERROR("Kicking stuck wait on %s\n",
1990 ring->name); 1990 ring->name);
1991 i915_handle_error(dev, false);
1991 I915_WRITE_CTL(ring, tmp); 1992 I915_WRITE_CTL(ring, tmp);
1992 return HANGCHECK_KICK; 1993 return HANGCHECK_KICK;
1993 } 1994 }
@@ -1999,6 +2000,7 @@ ring_stuck(struct intel_ring_buffer *ring, u32 acthd)
1999 case 1: 2000 case 1:
2000 DRM_ERROR("Kicking stuck semaphore on %s\n", 2001 DRM_ERROR("Kicking stuck semaphore on %s\n",
2001 ring->name); 2002 ring->name);
2003 i915_handle_error(dev, false);
2002 I915_WRITE_CTL(ring, tmp); 2004 I915_WRITE_CTL(ring, tmp);
2003 return HANGCHECK_KICK; 2005 return HANGCHECK_KICK;
2004 case 0: 2006 case 0: