diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 5161cea7a4ef..69a36fc035dc 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
@@ -1304,6 +1304,16 @@ void i915_hangcheck_elapsed(unsigned long data) | |||
1304 | &dev_priv->render_ring), | 1304 | &dev_priv->render_ring), |
1305 | i915_get_tail_request(dev)->seqno)) { | 1305 | i915_get_tail_request(dev)->seqno)) { |
1306 | dev_priv->hangcheck_count = 0; | 1306 | dev_priv->hangcheck_count = 0; |
1307 | |||
1308 | /* Issue a wake-up to catch stuck h/w. */ | ||
1309 | if (dev_priv->render_ring.waiting_gem_seqno | | ||
1310 | dev_priv->bsd_ring.waiting_gem_seqno) { | ||
1311 | DRM_ERROR("Hangcheck timer elapsed... GPU idle, missed IRQ.\n"); | ||
1312 | if (dev_priv->render_ring.waiting_gem_seqno) | ||
1313 | DRM_WAKEUP(&dev_priv->render_ring.irq_queue); | ||
1314 | if (dev_priv->bsd_ring.waiting_gem_seqno) | ||
1315 | DRM_WAKEUP(&dev_priv->bsd_ring.irq_queue); | ||
1316 | } | ||
1307 | return; | 1317 | return; |
1308 | } | 1318 | } |
1309 | 1319 | ||