Commit 9bedb974 authored by Daniel Vetter's avatar Daniel Vetter Committed by Eric Anholt

drm/i915: fixup interrupted overlay switch off calls

When switching to interruptible sleeps in the overlay code, I've
forgotten to recover from interruptions at one site.  This
resulted in the overlay still running when it should have been
switched off. This in turn caused a hang on resume because it
tried to disable the (not-running) overlay in preparation for the
resume modeset.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=24980
Tested-by: maximlevitsky@gmail.com
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarEric Anholt <eric@anholt.net>
parent 12ca45fe
...@@ -842,12 +842,15 @@ int intel_overlay_switch_off(struct intel_overlay *overlay) ...@@ -842,12 +842,15 @@ int intel_overlay_switch_off(struct intel_overlay *overlay)
BUG_ON(!mutex_is_locked(&dev->struct_mutex)); BUG_ON(!mutex_is_locked(&dev->struct_mutex));
BUG_ON(!mutex_is_locked(&dev->mode_config.mutex)); BUG_ON(!mutex_is_locked(&dev->mode_config.mutex));
if (overlay->hw_wedged) {
ret = intel_overlay_recover_from_interrupt(overlay, 1);
if (ret != 0)
return ret;
}
if (!overlay->active) if (!overlay->active)
return 0; return 0;
if (overlay->hw_wedged)
return -EBUSY;
ret = intel_overlay_release_old_vid(overlay); ret = intel_overlay_release_old_vid(overlay);
if (ret != 0) if (ret != 0)
return ret; return ret;
......
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