From 250ad48e2e2f2aeebafd52d67768392eca5077ad Mon Sep 17 00:00:00 2001 From: Imre Deak Date: Wed, 16 Mar 2016 13:39:00 +0200 Subject: [PATCH] drm/i915: Move unload time display power domain uninit later 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 Reviewed-by: Chris Wilson Link: http://patchwork.freedesktop.org/patch/msgid/1458128348-15730-12-git-send-email-imre.deak@intel.com --- drivers/gpu/drm/i915/i915_dma.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index 2bdafa998704..40a5af4038ca 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c @@ -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);