drm/i915: Move unload time display power domain uninit later
authorImre Deak <imre.deak@intel.com>
Wed, 16 Mar 2016 11:39:00 +0000 (13:39 +0200)
committerImre Deak <imre.deak@intel.com>
Thu, 17 Mar 2016 13:22:06 +0000 (15:22 +0200)
Move the power domain uninitialization later so that it matches its
corresponding init order. Since we access the HW during the later
unitialization steps keep a wake reference until after the last such
step.

Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/1458128348-15730-12-git-send-email-imre.deak@intel.com
drivers/gpu/drm/i915/i915_dma.c

index 2bdafa9..40a5af4 100644 (file)
@@ -1212,7 +1212,7 @@ int i915_driver_unload(struct drm_device *dev)
                return ret;
        }
 
-       intel_power_domains_fini(dev_priv);
+       intel_display_power_get(dev_priv, POWER_DOMAIN_INIT);
 
        i915_audio_component_cleanup(dev_priv);
 
@@ -1268,6 +1268,8 @@ int i915_driver_unload(struct drm_device *dev)
        mutex_unlock(&dev->struct_mutex);
        intel_fbc_cleanup_cfb(dev_priv);
 
+       intel_power_domains_fini(dev_priv);
+
        pm_qos_remove_request(&dev_priv->pm_qos);
 
        i915_global_gtt_cleanup(dev);
@@ -1276,6 +1278,9 @@ int i915_driver_unload(struct drm_device *dev)
        i915_mmio_cleanup(dev);
 
        pci_dev_put(dev_priv->bridge_dev);
+
+       intel_display_power_put(dev_priv, POWER_DOMAIN_INIT);
+
        i915_gem_load_cleanup(dev);
        i915_workqueues_cleanup(dev_priv);
        kfree(dev_priv);