[PATCH 3/6] drm/i915: add intel_gt_gpu_reset_clobbers_display() helper
Matt Roper
matthew.d.roper at intel.com
Wed Jan 8 21:16:31 UTC 2025
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 at intel.com>
Reviewed-by: Matt Roper <matthew.d.roper at 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
>
--
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation
More information about the Intel-gfx
mailing list