|
@@ -447,9 +447,19 @@ static int intel_lid_notify(struct notifier_block *nb, unsigned long val,
|
|
|
if (dev_priv->modeset_restore == MODESET_DONE)
|
|
|
goto exit;
|
|
|
|
|
|
- drm_modeset_lock_all(dev);
|
|
|
- intel_modeset_setup_hw_state(dev, true);
|
|
|
- drm_modeset_unlock_all(dev);
|
|
|
+ /*
|
|
|
+ * Some old platform's BIOS love to wreak havoc while the lid is closed.
|
|
|
+ * We try to detect this here and undo any damage. The split for PCH
|
|
|
+ * platforms is rather conservative and a bit arbitrary expect that on
|
|
|
+ * those platforms VGA disabling requires actual legacy VGA I/O access,
|
|
|
+ * and as part of the cleanup in the hw state restore we also redisable
|
|
|
+ * the vga plane.
|
|
|
+ */
|
|
|
+ if (!HAS_PCH_SPLIT(dev)) {
|
|
|
+ drm_modeset_lock_all(dev);
|
|
|
+ intel_modeset_setup_hw_state(dev, true);
|
|
|
+ drm_modeset_unlock_all(dev);
|
|
|
+ }
|
|
|
|
|
|
dev_priv->modeset_restore = MODESET_DONE;
|
|
|
|