[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