[PATCH 11/11] f2

Chris Wilson chris at chris-wilson.co.uk
Sun Nov 5 10:48:15 UTC 2017


---
 drivers/gpu/drm/i915/i915_drv.c     | 22 ++++++++++++++--------
 drivers/gpu/drm/i915/i915_gem.c     |  2 --
 drivers/gpu/drm/i915/i915_gem_gtt.c | 14 +++++---------
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index fe9e539b6c29..284dc3a08848 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -632,8 +632,6 @@ static void i915_gem_fini(struct drm_i915_private *dev_priv)
 	i915_gem_drain_freed_objects(dev_priv);
 
 	WARN_ON(!list_empty(&dev_priv->contexts.list));
-
-	intel_cleanup_gt_powersave(dev_priv);
 }
 
 static int i915_load_modeset_init(struct drm_device *dev)
@@ -1029,18 +1027,28 @@ static int i915_driver_init_mmio(struct drm_i915_private *dev_priv)
 
 	intel_uncore_init(dev_priv);
 
+	ret = i915_ggtt_probe_hw(dev_priv);
+	if (ret)
+		goto err_uncore;
+
+	intel_init_gt_powersave(dev_priv);
+
 	intel_uc_init_mmio(dev_priv);
 
 	ret = intel_engines_init_mmio(dev_priv);
 	if (ret)
-		goto err_uncore;
+		goto err_gt;
 
 	i915_gem_init_mmio(dev_priv);
 
 	return 0;
 
+err_gt:
+	intel_cleanup_gt_powersave(dev_priv);
+	i915_ggtt_cleanup_hw(dev_priv);
 err_uncore:
 	intel_uncore_fini(dev_priv);
+	i915_mmio_cleanup(dev_priv);
 err_bridge:
 	pci_dev_put(dev_priv->bridge_dev);
 
@@ -1053,6 +1061,8 @@ static int i915_driver_init_mmio(struct drm_i915_private *dev_priv)
  */
 static void i915_driver_cleanup_mmio(struct drm_i915_private *dev_priv)
 {
+	intel_cleanup_gt_powersave(dev_priv);
+	i915_ggtt_cleanup_hw(dev_priv);
 	intel_uncore_fini(dev_priv);
 	i915_mmio_cleanup(dev_priv);
 	pci_dev_put(dev_priv->bridge_dev);
@@ -1104,10 +1114,6 @@ static int i915_driver_init_hw(struct drm_i915_private *dev_priv)
 
 	intel_sanitize_options(dev_priv);
 
-	ret = i915_ggtt_probe_hw(dev_priv);
-	if (ret)
-		return ret;
-
 	/* WARNING: Apparently we must kick fbdev drivers before vgacon,
 	 * otherwise the vga fbdev driver falls over. */
 	ret = i915_kick_out_firmware_fb(dev_priv);
@@ -1126,6 +1132,7 @@ static int i915_driver_init_hw(struct drm_i915_private *dev_priv)
 	if (ret)
 		return ret;
 
+
 	ret = i915_ggtt_enable_hw(dev_priv);
 	if (ret) {
 		DRM_ERROR("failed to enable GGTT\n");
@@ -1213,7 +1220,6 @@ static void i915_driver_cleanup_hw(struct drm_i915_private *dev_priv)
 		pci_disable_msi(pdev);
 
 	pm_qos_remove_request(&dev_priv->pm_qos);
-	i915_ggtt_cleanup_hw(dev_priv);
 }
 
 /**
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 74f230652029..4075f7d1867f 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -5134,8 +5134,6 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
 	if (ret)
 		goto out_unlock;
 
-	intel_init_gt_powersave(dev_priv);
-
 	ret = i915_gem_init_hw(dev_priv);
 	if (ret)
 		goto out_unlock;
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 0684d5df97d9..30c9d858adab 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -3503,7 +3503,11 @@ int i915_ggtt_probe_hw(struct drm_i915_private *dev_priv)
 	if (intel_vtd_active())
 		DRM_INFO("VT-d active for gfx access\n");
 
-	return 0;
+	/*
+	 * Initialise stolen early so that we may reserve preallocated
+	 * objects for the BIOS to KMS transition.
+	 */
+	return i915_gem_init_stolen(dev_priv);
 }
 
 /**
@@ -3537,14 +3541,6 @@ int i915_ggtt_init_hw(struct drm_i915_private *dev_priv)
 
 	ggtt->mtrr = arch_phys_wc_add(ggtt->mappable_base, ggtt->mappable_end);
 
-	/*
-	 * Initialise stolen early so that we may reserve preallocated
-	 * objects for the BIOS to KMS transition.
-	 */
-	ret = i915_gem_init_stolen(dev_priv);
-	if (ret)
-		goto out_gtt_cleanup;
-
 	return 0;
 
 out_gtt_cleanup:
-- 
2.15.0



More information about the Intel-gfx-trybot mailing list