drm/i915: Short-circuit no-op vga_set_state()
authorChris Wilson <[email protected]>
Fri, 7 Feb 2014 20:37:03 +0000 (18:37 -0200)
committerDaniel Vetter <[email protected]>
Wed, 12 Feb 2014 17:52:56 +0000 (18:52 +0100)
Touching the VGA registers risks a hard machine hang, at least on this
ivb machine after removing a conflicting efifb. This is more than likely
related to the discovery that VGA IO decode on the more recent PCH
platforms is terminally broken.

Signed-off-by: Chris Wilson <[email protected]>
Cc: Ville Syrjälä <[email protected]>
Signed-off-by: Rodrigo Vivi <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
drivers/gpu/drm/i915/intel_display.c

index cc426e10d746b3e611a7dfa69ec8429d99bf9c99..1b2faa44764b164d1b6ce00aff3e0630168190da 100644 (file)
@@ -11513,6 +11513,9 @@ int intel_modeset_vga_set_state(struct drm_device *dev, bool state)
                return -EIO;
        }
 
+       if (!!(gmch_ctrl & INTEL_GMCH_VGA_DISABLE) == !state)
+               return 0;
+
        if (state)
                gmch_ctrl &= ~INTEL_GMCH_VGA_DISABLE;
        else