[PATCH 10/10] fx

Chris Wilson chris at chris-wilson.co.uk
Sat Nov 4 09:40:52 UTC 2017


---
 drivers/gpu/drm/i915/i915_drv.c |  9 +--------
 drivers/gpu/drm/i915/i915_gem.c | 15 +++++++++++++--
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index ba54bf1e806f..c53989f2a1f2 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1692,8 +1692,6 @@ static int i915_drm_resume(struct drm_device *dev)
 
 	intel_csr_ucode_resume(dev_priv);
 
-	i915_gem_resume(dev_priv);
-
 	i915_restore_state(dev_priv);
 	intel_pps_unlock_regs_wa(dev_priv);
 	intel_opregion_setup(dev_priv);
@@ -1714,12 +1712,7 @@ static int i915_drm_resume(struct drm_device *dev)
 
 	drm_mode_config_reset(dev);
 
-	mutex_lock(&dev->struct_mutex);
-	if (i915_gem_init_hw(dev_priv)) {
-		DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n");
-		i915_gem_set_wedged(dev_priv);
-	}
-	mutex_unlock(&dev->struct_mutex);
+	i915_gem_resume(dev_priv);
 
 	intel_guc_resume(dev_priv);
 
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index b7fafcf8d7a6..1982d49ad704 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4795,9 +4795,10 @@ int i915_gem_suspend(struct drm_i915_private *dev_priv)
 
 void i915_gem_resume(struct drm_i915_private *i915)
 {
+	mutex_lock(&i915->drm.struct_mutex);
+
 	WARN_ON(i915->gt.awake);
 
-	mutex_lock(&i915->drm.struct_mutex);
 	i915_gem_restore_gtt_mappings(i915);
 	i915_gem_restore_fences(i915);
 
@@ -4807,10 +4808,20 @@ void i915_gem_resume(struct drm_i915_private *i915)
 	 */
 	i915->gt.resume(i915);
 
+	if (i915_gem_init_hw(i915))
+		goto err_wedged;
+
 	/* Always reload a context for powersaving. */
-	i915_gem_switch_to_kernel_context(i915);
+	if (i915_gem_switch_to_kernel_context(i915))
+		goto err_wedged;
 
 	mutex_unlock(&i915->drm.struct_mutex);
+
+	return;
+
+err_wedged:
+	DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n");
+	i915_gem_set_wedged(i915);
 }
 
 void i915_gem_init_swizzling(struct drm_i915_private *dev_priv)
-- 
2.15.0



More information about the Intel-gfx-trybot mailing list