From: Ville Syrj?l? <ville.syrjala at linux.intel.com> Someone may be waiting for a flip that will never complete due to a GPU reset. Wake up all such waiters when the hang is first detected, and after the reset processing has finished. Signed-off-by: Ville Syrj?l? <ville.syrjala at linux.intel.com> --- drivers/gpu/drm/i915/i915_irq.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 13bb8d3..8b1146b 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -915,6 +915,8 @@ static void i915_error_work_func(struct work_struct *work) for_each_ring(ring, dev_priv, i) wake_up_all(&ring->irq_queue); + wake_up_all(&dev_priv->pending_flip_queue); + wake_up_all(&dev_priv->gpu_error.reset_queue); } } @@ -1540,6 +1542,8 @@ void i915_handle_error(struct drm_device *dev, bool wedged) */ for_each_ring(ring, dev_priv, i) wake_up_all(&ring->irq_queue); + + wake_up_all(&dev_priv->pending_flip_queue); } queue_work(dev_priv->wq, &dev_priv->gpu_error.work); -- 1.7.12.4