Message ID | cd347927dadb31a5291fc9f9087ab995a431bc16.1736332802.git.jani.nikula@intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm/i915: display reset cleanups | expand |
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 --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;
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(-)