Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > Resetting the engine requires us to hold the forcewake wakeref to > prevent RC6 trying to happen in the middle of the reset sequence. > Normally, this is taken by i915_handle_error(), but as we are calling There is no explicit forcewake grab on i915_handle_error(). What I am missing in here? -Mika > the lowlevel functions ourselves, we need to hold it. Wrap the entire > live_hangcheck set of subtests in a single forcewake section for > simplicity. > > This greatly improves the reliability of drv_selftest/live_hangcheck on > Haswell, where it would exhibit an inability to restart a request > because it lost its PD registers (PD_DIR_BASE reported as 0). > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/selftests/intel_hangcheck.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c > index 7e1bdd88eda3..a9e0decccc1f 100644 > --- a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c > +++ b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c > @@ -878,9 +878,18 @@ int intel_hangcheck_live_selftests(struct drm_i915_private *i915) > SUBTEST(igt_reset_queue), > SUBTEST(igt_handle_error), > }; > + int err; > > if (!intel_has_gpu_reset(i915)) > return 0; > > - return i915_subtests(tests, i915); > + intel_runtime_pm_get(i915); > + intel_uncore_forcewake_get(i915, FORCEWAKE_ALL); > + > + err = i915_subtests(tests, i915); > + > + intel_uncore_forcewake_put(i915, FORCEWAKE_ALL); > + intel_runtime_pm_put(i915); > + > + return err; > } > -- > 2.14.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx