aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-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);