[Intel-gfx] [PATCH 3/4] drm/i915/selftests: Hold the rpm/forcewake wakeref for the reset tests
Mika Kuoppala
mika.kuoppala at linux.intel.com
Mon Oct 9 10:14:44 UTC 2017
Chris Wilson <chris at chris-wilson.co.uk> 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 at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> ---
> 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
More information about the Intel-gfx
mailing list