Commit 653d7bed authored by Daniel Vetter's avatar Daniel Vetter

drm/i915: capture error_state also for stuck rings

Since quite a while we also the basic output configuration in the
error_state, so it should contain enough information to diagnose
these MI_WAIT hangs.
Reviewed-and-tested-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarEugeni Dodonov <eugeni.dodonov@intel.com>
Signed-Off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 6a9c308d
...@@ -1706,6 +1706,7 @@ void i915_hangcheck_elapsed(unsigned long data) ...@@ -1706,6 +1706,7 @@ void i915_hangcheck_elapsed(unsigned long data)
dev_priv->last_instdone1 == instdone1) { dev_priv->last_instdone1 == instdone1) {
if (dev_priv->hangcheck_count++ > 1) { if (dev_priv->hangcheck_count++ > 1) {
DRM_ERROR("Hangcheck timer elapsed... GPU hung\n"); DRM_ERROR("Hangcheck timer elapsed... GPU hung\n");
i915_handle_error(dev, true);
if (!IS_GEN2(dev)) { if (!IS_GEN2(dev)) {
/* Is the chip hanging on a WAIT_FOR_EVENT? /* Is the chip hanging on a WAIT_FOR_EVENT?
...@@ -1713,7 +1714,6 @@ void i915_hangcheck_elapsed(unsigned long data) ...@@ -1713,7 +1714,6 @@ void i915_hangcheck_elapsed(unsigned long data)
* and break the hang. This should work on * and break the hang. This should work on
* all but the second generation chipsets. * all but the second generation chipsets.
*/ */
if (kick_ring(&dev_priv->ring[RCS])) if (kick_ring(&dev_priv->ring[RCS]))
goto repeat; goto repeat;
...@@ -1726,7 +1726,6 @@ void i915_hangcheck_elapsed(unsigned long data) ...@@ -1726,7 +1726,6 @@ void i915_hangcheck_elapsed(unsigned long data)
goto repeat; goto repeat;
} }
i915_handle_error(dev, true);
return; return;
} }
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment