diff mbox series

[v4,3/7] cpufreq: amd-pstate: fix max_perf calculation for amd_get_max_freq()

Message ID 1da9848e022c49fef0a8cc390feba95c74be531d.1710322310.git.perry.yuan@amd.com (mailing list archive)
State Changes Requested, archived
Headers show
Series AMD Pstate Driver Core Performance Boost | expand

Commit Message

Yuan, Perry March 13, 2024, 10:04 a.m. UTC
From: Perry Yuan <Perry.Yuan@amd.com>

When CPU core Precision Boost state changed, the max frequency will also
need to be updated according to the current boost state, if boost is
disabled now, the max perf will be limited to nominal perf values.
otherwise the max frequency will be showed wrongly.

Signed-off-by: Perry Yuan <Perry.Yuan@amd.com>
---
 drivers/cpufreq/amd-pstate.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Gautham R. Shenoy March 14, 2024, 9:43 a.m. UTC | #1
On Wed, Mar 13, 2024 at 06:04:40PM +0800, Perry Yuan wrote:
> From: Perry Yuan <Perry.Yuan@amd.com>
> 
> When CPU core Precision Boost state changed, the max frequency will also
> need to be updated according to the current boost state, if boost is
> disabled now, the max perf will be limited to nominal perf values.
> otherwise the max frequency will be showed wrongly.
> 
> Signed-off-by: Perry Yuan <Perry.Yuan@amd.com>

Looks good to me.

Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com>

> ---
>  drivers/cpufreq/amd-pstate.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
> index d54399ebb758..0965fbf660dd 100644
> --- a/drivers/cpufreq/amd-pstate.c
> +++ b/drivers/cpufreq/amd-pstate.c
> @@ -632,6 +632,10 @@ static int amd_get_max_freq(struct amd_cpudata *cpudata)
>  	nominal_perf = READ_ONCE(cpudata->nominal_perf);
>  	max_perf = READ_ONCE(cpudata->highest_perf);
>  
> +	/* when boost is off, the highest perf will be limited to nominal_perf */
> +	if (!amd_pstate_global_params.cpb_boost)
> +		max_perf = nominal_perf;
> +
>  	boost_ratio = div_u64(max_perf << SCHED_CAPACITY_SHIFT,
>  			      nominal_perf);
>  
> -- 
> 2.34.1
>
diff mbox series

Patch

diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
index d54399ebb758..0965fbf660dd 100644
--- a/drivers/cpufreq/amd-pstate.c
+++ b/drivers/cpufreq/amd-pstate.c
@@ -632,6 +632,10 @@  static int amd_get_max_freq(struct amd_cpudata *cpudata)
 	nominal_perf = READ_ONCE(cpudata->nominal_perf);
 	max_perf = READ_ONCE(cpudata->highest_perf);
 
+	/* when boost is off, the highest perf will be limited to nominal_perf */
+	if (!amd_pstate_global_params.cpb_boost)
+		max_perf = nominal_perf;
+
 	boost_ratio = div_u64(max_perf << SCHED_CAPACITY_SHIFT,
 			      nominal_perf);