]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915: unbreak lastclose for failed driver init
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sat, 21 Jul 2012 14:47:09 +0000 (16:47 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 25 Jul 2012 08:40:00 +0000 (10:40 +0200)
We now refuse to load on gen6+ if kms is not enabled:

commit b8bca24730a0fc68ecbe7c62a1116f44ee8f110c
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Mon Mar 26 21:33:18 2012 +0200

    drm/i915: refuse to load on gen6+ without kms

Which results in the drm core calling our lastclose function to clean
up the mess, but that one is neatly broken for such failure cases
since kms has been introduced in

commit fe93e5c08a8e6f34a2e7d57d6d114ac34480e226
Author: Jesse Barnes <jbarnes@virtuousgeek.org>
Date:   Fri Nov 7 14:24:08 2008 -0800

    DRM: i915: add mode setting support

Reported-and-tested-by: Paulo Zanoni <przanoni@gmail.com>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_dma.c

index f64ef4b723fda8cc0d916294d3e1cd01a87dba40..9cf7dfe022b989a23e02cb8ad45cd2177f956605 100644 (file)
@@ -1781,7 +1781,13 @@ void i915_driver_lastclose(struct drm_device * dev)
 {
        drm_i915_private_t *dev_priv = dev->dev_private;
 
-       if (!dev_priv || drm_core_check_feature(dev, DRIVER_MODESET)) {
+       /* On gen6+ we refuse to init without kms enabled, but then the drm core
+        * goes right around and calls lastclose. Check for this and don't clean
+        * up anything. */
+       if (!dev_priv)
+               return;
+
+       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
                intel_fb_restore_mode(dev);
                vga_switcheroo_process_delayed_switch();
                return;