summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2025-03-03 13:27:08 +0200
committerJani Nikula <jani.nikula@intel.com>2025-03-05 12:48:22 +0200
commit4684498cf9991e97a001ef5814391c7f7321ff99 (patch)
tree606cc368220f8cd01b8084c2a5f3a07692b5b85d
parentea349ec038c40b4bc6f20a61137282569d944ee0 (diff)
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: Matt Roper <matthew.d.roper@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/c32a88f292f516ec702bd07001ac609b8acc2888.1741001054.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
-rw-r--r--drivers/gpu/drm/i915/display/intel_display_reset.c5
-rw-r--r--drivers/gpu/drm/i915/gt/intel_reset.c10
2 files changed, 9 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_display_reset.c b/drivers/gpu/drm/i915/display/intel_display_reset.c
index acc728c75328..c48d822db58e 100644
--- a/drivers/gpu/drm/i915/display/intel_display_reset.c
+++ b/drivers/gpu/drm/i915/display/intel_display_reset.c
@@ -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");
diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c
index d8425ce019df..23f3fdaadb33 100644
--- a/drivers/gpu/drm/i915/gt/intel_reset.c
+++ b/drivers/gpu/drm/i915/gt/intel_reset.c
@@ -1422,9 +1422,17 @@ 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;
- reset_display = intel_display_reset_prepare(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);