drm/i915: Fix power domain HW state cleanup on error path
authorImre Deak <imre.deak@intel.com>
Wed, 16 Mar 2016 11:39:07 +0000 (13:39 +0200)
committerImre Deak <imre.deak@intel.com>
Thu, 17 Mar 2016 13:22:08 +0000 (15:22 +0200)
Move the cleanup of the power domain HW state on the error path to the
same function where the corresponding init call was called from. I
noticed this problem when loading the module with load failure injection
enabled, making i915_load_modeset_init() fail.

CC: Chris Wilson <chris@chris-wilson.co.uk>
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-19-git-send-email-imre.deak@intel.com
drivers/gpu/drm/i915/i915_dma.c

index b8c5fd0a99aa3dd24e5876f6a4f0b4b8062ecef7..7466e739887de47903f55a1d01746476bf88b408 100644 (file)
@@ -453,6 +453,7 @@ cleanup_irq:
        intel_teardown_gmbus(dev);
 cleanup_csr:
        intel_csr_ucode_fini(dev_priv);
+       intel_power_domains_fini(dev_priv);
        vga_switcheroo_unregister_client(dev->pdev);
 cleanup_vga_client:
        vga_client_register(dev->pdev, NULL, NULL, NULL);
@@ -1306,7 +1307,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
        ret = i915_load_modeset_init(dev);
        if (ret < 0) {
                DRM_ERROR("failed to init modeset\n");
-               goto out_power_well;
+               goto out_cleanup_vblank;
        }
 
        i915_driver_register(dev_priv);
@@ -1317,8 +1318,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
 
        return 0;
 
-out_power_well:
-       intel_power_domains_fini(dev_priv);
+out_cleanup_vblank:
        drm_vblank_cleanup(dev);
 out_cleanup_hw:
        i915_driver_cleanup_hw(dev_priv);