diff mbox series

cpufreq: intel_pstate: Fix cpu->pstate.turbo_freq initialization

Message ID 20211026083242.27472-1-rui.zhang@intel.com (mailing list archive)
State Mainlined, archived
Headers show
Series cpufreq: intel_pstate: Fix cpu->pstate.turbo_freq initialization | expand

Commit Message

Zhang, Rui Oct. 26, 2021, 8:32 a.m. UTC
Fix a problem in active mode that cpu->pstate.turbo_freq is initialized
only if HWP-to-frequency scaling factor is refined.

In passive mode, this problem is not exposed, because
cpu->pstate.turbo_freq is set again, later in
intel_cpufreq_cpu_init()->intel_pstate_get_hwp_cap().

Fixes: eb3693f0521e ("cpufreq: intel_pstate: hybrid: CPU-specific scaling factor")
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
 drivers/cpufreq/intel_pstate.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Rafael J. Wysocki Oct. 26, 2021, 2:03 p.m. UTC | #1
On Tue, Oct 26, 2021 at 10:17 AM Zhang Rui <rui.zhang@intel.com> wrote:
>
> Fix a problem in active mode that cpu->pstate.turbo_freq is initialized
> only if HWP-to-frequency scaling factor is refined.
>
> In passive mode, this problem is not exposed, because
> cpu->pstate.turbo_freq is set again, later in
> intel_cpufreq_cpu_init()->intel_pstate_get_hwp_cap().
>
> Fixes: eb3693f0521e ("cpufreq: intel_pstate: hybrid: CPU-specific scaling factor")
> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> ---
>  drivers/cpufreq/intel_pstate.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index 8c176b7dae41..fc7a429f22d3 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -537,7 +537,8 @@ static void intel_pstate_hybrid_hwp_adjust(struct cpudata *cpu)
>          * scaling factor is too high, so recompute it to make the HWP_CAP
>          * highest performance correspond to the maximum turbo frequency.
>          */
> -       if (turbo_freq < cpu->pstate.turbo_pstate * scaling) {
> +       cpu->pstate.turbo_freq = cpu->pstate.turbo_pstate * scaling;
> +       if (turbo_freq < cpu->pstate.turbo_freq) {
>                 cpu->pstate.turbo_freq = turbo_freq;
>                 scaling = DIV_ROUND_UP(turbo_freq, cpu->pstate.turbo_pstate);
>                 cpu->pstate.scaling = scaling;
> --

Applied as 5.16 material, thanks!
diff mbox series

Patch

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 8c176b7dae41..fc7a429f22d3 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -537,7 +537,8 @@  static void intel_pstate_hybrid_hwp_adjust(struct cpudata *cpu)
 	 * scaling factor is too high, so recompute it to make the HWP_CAP
 	 * highest performance correspond to the maximum turbo frequency.
 	 */
-	if (turbo_freq < cpu->pstate.turbo_pstate * scaling) {
+	cpu->pstate.turbo_freq = cpu->pstate.turbo_pstate * scaling;
+	if (turbo_freq < cpu->pstate.turbo_freq) {
 		cpu->pstate.turbo_freq = turbo_freq;
 		scaling = DIV_ROUND_UP(turbo_freq, cpu->pstate.turbo_pstate);
 		cpu->pstate.scaling = scaling;