Commit 4684498c authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/reset: decide whether display reset is needed on gt side



Move the checks for whether display reset is needed at all to gt side of
things. This way, we can decide to skip the display calls altogether if
display reset is not required.

Cc: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/c32a88f292f516ec702bd07001ac609b8acc2888.1741001054.git.jani.nikula@intel.com


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent ea349ec0
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -38,11 +38,6 @@ bool intel_display_reset_prepare(struct intel_display *display)
	if (!HAS_DISPLAY(display))
		return false;

	/* reset doesn't touch the display */
	if (!intel_display_reset_test(display) &&
	    !gpu_reset_clobbers_display(display))
		return false;

	if (atomic_read(&display->restore.pending_fb_pin)) {
		drm_dbg_kms(display->drm,
			    "Modeset potentially stuck, unbreaking through wedging\n");
+9 −1
Original line number Diff line number Diff line
@@ -1422,8 +1422,16 @@ static void intel_gt_reset_global(struct intel_gt *gt,
	intel_wedge_on_timeout(&w, gt, 60 * HZ) {
		struct drm_i915_private *i915 = gt->i915;
		struct intel_display *display = &i915->display;
		bool need_display_reset;
		bool reset_display;

		need_display_reset = intel_gt_gpu_reset_clobbers_display(gt) &&
			intel_has_gpu_reset(gt);

		reset_display = intel_display_reset_test(display) ||
			need_display_reset;

		if (reset_display)
			reset_display = intel_display_reset_prepare(display);

		intel_gt_reset(gt, engine_mask, reason);