Chris Wilson <[email protected]> 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 <[email protected]>
> Cc: Mika Kuoppala <[email protected]>
> ---
>  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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to