diff mbox series

[3/6] drm/i915: add intel_gt_gpu_reset_clobbers_display() helper

Message ID cd347927dadb31a5291fc9f9087ab995a431bc16.1736332802.git.jani.nikula@intel.com (mailing list archive)
State New
Headers show
Series drm/i915: display reset cleanups | expand

Commit Message

Jani Nikula Jan. 8, 2025, 10:41 a.m. UTC
Add a helper for checking the gpu_reset_clobbers_display flag to make it
easier to relocate the flag later.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_engine_cs.c |  2 +-
 drivers/gpu/drm/i915/gt/intel_gt_pm.c     |  2 +-
 drivers/gpu/drm/i915/gt/intel_reset.c     | 15 +++++++++++----
 drivers/gpu/drm/i915/gt/intel_reset.h     |  2 ++
 drivers/gpu/drm/i915/i915_driver.c        |  2 +-
 5 files changed, 16 insertions(+), 7 deletions(-)

Comments

Matt Roper Jan. 8, 2025, 9:16 p.m. UTC | #1
On Wed, Jan 08, 2025 at 12:41:18PM +0200, Jani Nikula wrote:
> Add a helper for checking the gpu_reset_clobbers_display flag to make it
> easier to relocate the flag later.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  drivers/gpu/drm/i915/gt/intel_engine_cs.c |  2 +-
>  drivers/gpu/drm/i915/gt/intel_gt_pm.c     |  2 +-
>  drivers/gpu/drm/i915/gt/intel_reset.c     | 15 +++++++++++----
>  drivers/gpu/drm/i915/gt/intel_reset.h     |  2 ++
>  drivers/gpu/drm/i915/i915_driver.c        |  2 +-
>  5 files changed, 16 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> index 4d30a86016f2..6e6ceb0de019 100644
> --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> @@ -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 */
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
> index c08fdb65cc69..7d7a93e6db8f 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
> @@ -156,7 +156,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;
> diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c
> index 686be6edd2e3..0d863aa58fb6 100644
> --- a/drivers/gpu/drm/i915/gt/intel_reset.c
> +++ b/drivers/gpu/drm/i915/gt/intel_reset.c
> @@ -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);
> diff --git a/drivers/gpu/drm/i915/gt/intel_reset.h b/drivers/gpu/drm/i915/gt/intel_reset.h
> index c00de353075c..724ea6d64f33 100644
> --- a/drivers/gpu/drm/i915/gt/intel_reset.h
> +++ b/drivers/gpu/drm/i915/gt/intel_reset.h
> @@ -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);
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> index c2ae37d6b94d..be44b66da310 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -201,7 +201,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;
>  
> -- 
> 2.39.5
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index 4d30a86016f2..6e6ceb0de019 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -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 */
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
index c08fdb65cc69..7d7a93e6db8f 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
@@ -156,7 +156,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;
diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c
index 686be6edd2e3..0d863aa58fb6 100644
--- a/drivers/gpu/drm/i915/gt/intel_reset.c
+++ b/drivers/gpu/drm/i915/gt/intel_reset.c
@@ -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);
diff --git a/drivers/gpu/drm/i915/gt/intel_reset.h b/drivers/gpu/drm/i915/gt/intel_reset.h
index c00de353075c..724ea6d64f33 100644
--- a/drivers/gpu/drm/i915/gt/intel_reset.h
+++ b/drivers/gpu/drm/i915/gt/intel_reset.h
@@ -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);
diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
index c2ae37d6b94d..be44b66da310 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -201,7 +201,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;