drm/i915/lvds: Only act on lid notify when the device is on
authorAlex Williamson <alex.williamson@redhat.com>
Thu, 21 Apr 2011 22:08:14 +0000 (16:08 -0600)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 21 May 2011 22:13:08 +0000 (15:13 -0700)
commit 2fb4e61d9471867677c97bf11dba8f1e9dfa7f7c upstream.

If we're using vga switcheroo, the device may be turned off
and poking it can return random state. This provokes an OOPS fixed
separately by 8ff887c847 (drm/i915/dp: Be paranoid in case we disable a
DP before it is attached). Trying to use and respond to events on a
device that has been turned off by the user is in principle a silly thing
to do.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/gpu/drm/i915/intel_lvds.c

index bcdba7bd5cfafb26efa1b8f150530836d8cc5c71..b902192c4647c1f036a093e58f9da7ad03ba8afd 100644 (file)
@@ -540,6 +540,9 @@ static int intel_lid_notify(struct notifier_block *nb, unsigned long val,
        struct drm_device *dev = dev_priv->dev;
        struct drm_connector *connector = dev_priv->int_lvds_connector;
 
+       if (dev->switch_power_state != DRM_SWITCH_POWER_ON)
+               return NOTIFY_OK;
+
        /*
         * check and update the status of LVDS connector after receiving
         * the LID nofication event.