drm/i915/reset: add intel_gt_gpu_reset_clobbers_display() helper
authorJani Nikula <jani.nikula@intel.com>
Mon, 3 Mar 2025 11:27:05 +0000 (13:27 +0200)
committerJani Nikula <jani.nikula@intel.com>
Wed, 5 Mar 2025 10:48:22 +0000 (12:48 +0200)
Add a helper for checking the gpu_reset_clobbers_display flag to make it
easier to relocate the flag later.

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/434d5db7675ed9717b3beae1389008b68a961855.1741001054.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/gt/intel_engine_cs.c
drivers/gpu/drm/i915/gt/intel_gt_pm.c
drivers/gpu/drm/i915/gt/intel_reset.c
drivers/gpu/drm/i915/gt/intel_reset.h
drivers/gpu/drm/i915/i915_driver.c

index ec136eb12d48b86f0b6a1106dcf02da99093f275..39f6ba4bf1ab1406ff834d510fbaeec34949b6d2 100644 (file)
@@ -677,7 +677,7 @@ void intel_engines_release(struct intel_gt *gt)
         * in case we aborted before completely initialising the engines.
         */
        GEM_BUG_ON(intel_gt_pm_is_awake(gt));
-       if (!INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
+       if (!intel_gt_gpu_reset_clobbers_display(gt))
                intel_gt_reset_all_engines(gt);
 
        /* Decouple the backend; but keep the layout for late GPU resets */
index 175fa2db05517ef278700b6921738462588913a3..3182f19b98376fcb753ec18c3281ef42c6a1e0bd 100644 (file)
@@ -158,7 +158,7 @@ void intel_gt_pm_init(struct intel_gt *gt)
 
 static bool reset_engines(struct intel_gt *gt)
 {
-       if (INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
+       if (intel_gt_gpu_reset_clobbers_display(gt))
                return false;
 
        return intel_gt_reset_all_engines(gt) == 0;
index a4b1fec52b21c785ab59df8fcc5c434c3a5e4e4f..2dbfb5c39d69b5964d8ea1134c7cce2aefae89da 100644 (file)
@@ -986,7 +986,7 @@ static void __intel_gt_set_wedged(struct intel_gt *gt)
        awake = reset_prepare(gt);
 
        /* Even if the GPU reset fails, it should still stop the engines */
-       if (!INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
+       if (!intel_gt_gpu_reset_clobbers_display(gt))
                intel_gt_reset_all_engines(gt);
 
        for_each_engine(engine, gt, id)
@@ -1106,7 +1106,7 @@ static bool __intel_gt_unset_wedged(struct intel_gt *gt)
 
        /* We must reset pending GPU events before restoring our submission */
        ok = !HAS_EXECLISTS(gt->i915); /* XXX better agnosticism desired */
-       if (!INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
+       if (!intel_gt_gpu_reset_clobbers_display(gt))
                ok = intel_gt_reset_all_engines(gt) == 0;
        if (!ok) {
                /*
@@ -1178,6 +1178,13 @@ static int resume(struct intel_gt *gt)
        return 0;
 }
 
+bool intel_gt_gpu_reset_clobbers_display(struct intel_gt *gt)
+{
+       struct drm_i915_private *i915 = gt->i915;
+
+       return INTEL_INFO(i915)->gpu_reset_clobbers_display;
+}
+
 /**
  * intel_gt_reset - reset chip after a hang
  * @gt: #intel_gt to reset
@@ -1234,7 +1241,7 @@ void intel_gt_reset(struct intel_gt *gt,
                goto error;
        }
 
-       if (INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
+       if (intel_gt_gpu_reset_clobbers_display(gt))
                intel_irq_suspend(gt->i915);
 
        if (do_reset(gt, stalled_mask)) {
@@ -1242,7 +1249,7 @@ void intel_gt_reset(struct intel_gt *gt,
                goto taint;
        }
 
-       if (INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
+       if (intel_gt_gpu_reset_clobbers_display(gt))
                intel_irq_resume(gt->i915);
 
        intel_overlay_reset(display);
index c00de353075c97dbc5754ee7b60cba1b6ae47366..724ea6d64f3367d2d03f7e8571e1c76b2f737563 100644 (file)
@@ -28,6 +28,8 @@ void intel_gt_handle_error(struct intel_gt *gt,
                           const char *fmt, ...);
 #define I915_ERROR_CAPTURE BIT(0)
 
+bool intel_gt_gpu_reset_clobbers_display(struct intel_gt *gt);
+
 void intel_gt_reset(struct intel_gt *gt,
                    intel_engine_mask_t stalled_mask,
                    const char *reason);
index 613084fd00979f4753c1e3c56aa7ca5943b13288..59bf2d45403f1b5540fe7c160de7628bcfb1cd6a 100644 (file)
@@ -200,7 +200,7 @@ static void intel_detect_preproduction_hw(struct drm_i915_private *dev_priv)
 
 static void sanitize_gpu(struct drm_i915_private *i915)
 {
-       if (!INTEL_INFO(i915)->gpu_reset_clobbers_display) {
+       if (!intel_gt_gpu_reset_clobbers_display(to_gt(i915))) {
                struct intel_gt *gt;
                unsigned int i;