[Intel-gfx] [PATCH 09/25] drm/i915/icl: Refine PG_HYSTERESIS

Mika Kuoppala mika.kuoppala at linux.intel.com
Mon Nov 11 10:59:10 UTC 2019


Chris Wilson <chris at chris-wilson.co.uk> writes:

> After doing some measuring, Icelake behaves on a par with Broadwell, and
> without having to compromise for low power cores with long latencies, we
> can reduce the powergating hysteresis so that the powersaving is enabled
> faster. No impact observed on client side throughput measures (so
> negligible increase in extra switching), and inspection from high
> frequency polling using igt/gem_exec_nop/sequential, provided an estimate
> for the upper bound before we can measure a substantial impact on
> latency.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/gt/intel_rc6.c | 13 +++++--------
>  1 file changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_rc6.c b/drivers/gpu/drm/i915/gt/intel_rc6.c
> index 5ad4a92a9582..5e3ba034bd46 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rc6.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rc6.c
> @@ -88,15 +88,12 @@ static void gen11_rc6_enable(struct intel_rc6 *rc6)
>  	 * do not want the enable hysteresis to less than the wakeup latency.
>  	 *
>  	 * igt/gem_exec_nop/sequential provides a rough estimate for the
> -	 * service latency, and puts it around 10us for Broadwell (and other
> -	 * big core) and around 40us for Broxton (and other low power cores).
> -	 * [Note that for legacy ringbuffer submission, this is less than 1us!]
> -	 * However, the wakeup latency on Broxton is closer to 100us. To be
> -	 * conservative, we have to factor in a context switch on top (due
> -	 * to ksoftirqd).
> +	 * service latency, and puts it under 10us for Icelake, similar to
> +	 * Broadwell+, To be conservative, we want to factor in a context
> +	 * switch on top (due to ksoftirqd).
>  	 */
> -	set(uncore, GEN9_MEDIA_PG_IDLE_HYSTERESIS, 250);
> -	set(uncore, GEN9_RENDER_PG_IDLE_HYSTERESIS, 250);
> +	set(uncore, GEN9_MEDIA_PG_IDLE_HYSTERESIS, 60);
> +	set(uncore, GEN9_RENDER_PG_IDLE_HYSTERESIS, 60);

Deja-vu moment in here. I think I have already stamped this patch.

The proposed ranges are well within what the bspec recommends.
No use to lose energy without upside.

Reviewed-by: Mika Kuoppala <mika.kuoppala at linux.intel.com>

>  
>  	/* 3a: Enable RC6 */
>  	set(uncore, GEN6_RC_CONTROL,
> -- 
> 2.24.0


More information about the Intel-gfx mailing list