aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-10-28 04:24:13 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-10-30 05:35:55 -0400
commitf4adcd247766e5b914f861ed143ff328f869bf80 (patch)
tree3f6be670d9323e5e36eb9516a9e2ec82380f9f34
parentddb642fb0566758ace34384538720db0e24bcd4c (diff)
drm/i915: handle faked missed interrupts as simulated hangs, too
Otherwise QA will report this as a real hang when running igt ZZ_missed_irq. v2: Actually test the right stuff and really shut up the DRM_ERROR output ... Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70747 Tested-by: lu hua <huax.lu@intel.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 1a7dc7754e2f..68936da7c25d 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2258,8 +2258,12 @@ static void i915_hangcheck_elapsed(unsigned long data)
2258 if (waitqueue_active(&ring->irq_queue)) { 2258 if (waitqueue_active(&ring->irq_queue)) {
2259 /* Issue a wake-up to catch stuck h/w. */ 2259 /* Issue a wake-up to catch stuck h/w. */
2260 if (!test_and_set_bit(ring->id, &dev_priv->gpu_error.missed_irq_rings)) { 2260 if (!test_and_set_bit(ring->id, &dev_priv->gpu_error.missed_irq_rings)) {
2261 DRM_ERROR("Hangcheck timer elapsed... %s idle\n", 2261 if (!(dev_priv->gpu_error.test_irq_rings & intel_ring_flag(ring)))
2262 ring->name); 2262 DRM_ERROR("Hangcheck timer elapsed... %s idle\n",
2263 ring->name);
2264 else
2265 DRM_INFO("Fake missed irq on %s\n",
2266 ring->name);
2263 wake_up_all(&ring->irq_queue); 2267 wake_up_all(&ring->irq_queue);
2264 } 2268 }
2265 /* Safeguard against driver failure */ 2269 /* Safeguard against driver failure */