[Intel-gfx] [PATCH 4/7] drm/i915: only disable outputs in simulated gpu resets

Daniel Vetter daniel.vetter at ffwll.ch
Sat Jul 15 11:40:03 UTC 2017


For the old chips where the reset also kills the display we don't need
to do this, it all goes down on its own. We only need to do this for
gpu resets where the interaction with the display side is simulated.

This means we're not 100% faithful with what we test, but there's a
big pile of other small differences (like having to restore interrupts
and hpd handling and everything else).

Doing that means we don't have a full commit to synchronize with all
outstanding changes, so use the new helper to do that instead.

Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index e3c55a996f6b..b0de36f11f6d 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -3484,6 +3484,8 @@ void intel_prepare_reset(struct drm_i915_private *dev_priv)
 
 		drm_modeset_backoff(ctx);
 	}
+	drm_atomic_helper_sync_all(dev);
+
 	/*
 	 * Disabling the crtcs gracefully seems nicer. Also the
 	 * g33 docs say we should at least disable all the planes.
@@ -3495,11 +3497,15 @@ void intel_prepare_reset(struct drm_i915_private *dev_priv)
 		return;
 	}
 
-	ret = drm_atomic_helper_disable_all(dev, ctx);
-	if (ret) {
-		DRM_ERROR("Suspending crtc's failed with %i\n", ret);
-		drm_atomic_state_put(state);
-		return;
+	/* only when we test this through force_reset_modeset_test shut down the
+	 * entire display manually. For hw where gpu reset kills the display
+	 * this happens automatically. This avoids unecessary trouble with
+	 * double-commit.
+	 */
+	if (!gpu_reset_clobbers_display(dev_priv)) {
+		ret = drm_atomic_helper_disable_all(dev, ctx);
+		if (ret)
+			DRM_ERROR("Suspending crtc's failed with %i\n", ret);
 	}
 
 	dev_priv->modeset_restore_state = state;
-- 
2.13.2



More information about the Intel-gfx mailing list