Re: [PATCH] cpufreq: intel_pstate: Limit the scope of HWP dynamic boost platforms

From: Rafael J. Wysocki
Date: Tue Jul 31 2018 - 05:20:41 EST


On Tuesday, July 31, 2018 12:00:29 AM CEST Srinivas Pandruvada wrote:
> Dynamic boosting of HWP performance on IO wake showed significant
> improvement to IO workloads. This series was intended for Skylake Xeon
> platforms only and feature was enabled by default based on CPU model
> number.
>
> But some Xeon platforms reused the Skylake desktop CPU model number. This
> caused some undesirable side effects to some graphics workloads. Since
> they are heavily IO bound, the increase in CPU performance decreased the
> power available for GPU to do its computing and hence decrease in graphics
> benchmark performance.
>
> For example on a Skylake desktop, GpuTest benchmark showed average FPS
> reduction from 529 to 506.
>
> This change makes sure that HWP boost feature is only enabled for Skylake
> server platforms by using ACPI FADT preferred PM Profile. If some desktop
> users wants to get benefit of boost, they can still enable boost from
> intel_pstate sysfs attribute "hwp_dynamic_boost".
>
> Fixes: 41ab43c9c89e (cpufreq: intel_pstate: enable boost for Skylake Xeon)
> Link: https://bugs.freedesktop.org/show_bug.cgi?id=107410
> Reported-by: Eero Tamminen <eero.t.tamminen@xxxxxxxxx>
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>
> ---
> drivers/cpufreq/intel_pstate.c | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index 3c3971256130..d4ed0022b0dd 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -311,12 +311,20 @@ static DEFINE_MUTEX(intel_pstate_limits_lock);
>
> #ifdef CONFIG_ACPI
>
> -static bool intel_pstate_get_ppc_enable_status(void)
> +static bool intel_pstate_acpi_pm_profile_server(void)
> {
> if (acpi_gbl_FADT.preferred_profile == PM_ENTERPRISE_SERVER ||
> acpi_gbl_FADT.preferred_profile == PM_PERFORMANCE_SERVER)
> return true;
>
> + return false;
> +}
> +
> +static bool intel_pstate_get_ppc_enable_status(void)
> +{
> + if (intel_pstate_acpi_pm_profile_server())
> + return true;
> +
> return acpi_ppc;
> }
>
> @@ -459,6 +467,11 @@ static inline void intel_pstate_init_acpi_perf_limits(struct cpufreq_policy *pol
> static inline void intel_pstate_exit_perf_limits(struct cpufreq_policy *policy)
> {
> }
> +
> +static inline bool intel_pstate_acpi_pm_profile_server(void)
> +{
> + return false;
> +}
> #endif
>
> static inline void update_turbo_state(void)
> @@ -1841,7 +1854,7 @@ static int intel_pstate_init_cpu(unsigned int cpunum)
> intel_pstate_hwp_enable(cpu);
>
> id = x86_match_cpu(intel_pstate_hwp_boost_ids);
> - if (id)
> + if (id && intel_pstate_acpi_pm_profile_server())
> hwp_boost = true;
> }
>
>

Applied, thanks!