Message ID | 20241205222847.7889-7-mario.limonciello@amd.com |
---|---|
State | Superseded |
Headers | show |
Series | amd-pstate 6.14 cleanups and improvements | expand |
On Thu, Dec 05, 2024 at 04:28:38PM -0600, Mario Limonciello wrote: > commit 18d9b5227121 ("cpufreq/amd-pstate: Use nominal perf for limits > when boost is disabled") introduced different semantics for min/max limits > based upon whether the user turned off boost from sysfs. > > This however is not necessary when the highest perf value is the boost > numerator. > > Suggested-by: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com> > Fixes: 18d9b5227121 ("cpufreq/amd-pstate: Use nominal perf for limits when boost is disabled") > Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> > --- > drivers/cpufreq/amd-pstate.c | 13 +++++-------- > 1 file changed, 5 insertions(+), 8 deletions(-) > > diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c > index 738f63d70546f..14bd6faa3d730 100644 > --- a/drivers/cpufreq/amd-pstate.c > +++ b/drivers/cpufreq/amd-pstate.c > @@ -601,16 +601,13 @@ static int amd_pstate_verify(struct cpufreq_policy_data *policy_data) > > static int amd_pstate_update_min_max_limit(struct cpufreq_policy *policy) > { > - u32 max_limit_perf, min_limit_perf, lowest_perf, max_perf; > + u32 max_limit_perf, min_limit_perf, lowest_perf, max_perf, max_freq; > struct amd_cpudata *cpudata = policy->driver_data; > > - if (cpudata->boost_supported && !policy->boost_enabled) > - max_perf = READ_ONCE(cpudata->nominal_perf); > - else > - max_perf = READ_ONCE(cpudata->highest_perf); > - > - max_limit_perf = div_u64(policy->max * max_perf, policy->cpuinfo.max_freq); > - min_limit_perf = div_u64(policy->min * max_perf, policy->cpuinfo.max_freq); > + max_perf = READ_ONCE(cpudata->highest_perf); > + max_freq = READ_ONCE(cpudata->max_freq); > + max_limit_perf = div_u64(policy->max * max_perf, max_freq); > + min_limit_perf = div_u64(policy->min * max_perf, max_freq); Looks good to me. At some point in the future, we should consider using nominal_perf and nominal_freq as the baseline for the freq-->perf and perf-->freq conversions. That is invariant to boost being enabled or not. Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com> -- Thanks and Regards gautham. > > lowest_perf = READ_ONCE(cpudata->lowest_perf); > if (min_limit_perf < lowest_perf) > -- > 2.43.0 >
diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c index 738f63d70546f..14bd6faa3d730 100644 --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c @@ -601,16 +601,13 @@ static int amd_pstate_verify(struct cpufreq_policy_data *policy_data) static int amd_pstate_update_min_max_limit(struct cpufreq_policy *policy) { - u32 max_limit_perf, min_limit_perf, lowest_perf, max_perf; + u32 max_limit_perf, min_limit_perf, lowest_perf, max_perf, max_freq; struct amd_cpudata *cpudata = policy->driver_data; - if (cpudata->boost_supported && !policy->boost_enabled) - max_perf = READ_ONCE(cpudata->nominal_perf); - else - max_perf = READ_ONCE(cpudata->highest_perf); - - max_limit_perf = div_u64(policy->max * max_perf, policy->cpuinfo.max_freq); - min_limit_perf = div_u64(policy->min * max_perf, policy->cpuinfo.max_freq); + max_perf = READ_ONCE(cpudata->highest_perf); + max_freq = READ_ONCE(cpudata->max_freq); + max_limit_perf = div_u64(policy->max * max_perf, max_freq); + min_limit_perf = div_u64(policy->min * max_perf, max_freq); lowest_perf = READ_ONCE(cpudata->lowest_perf); if (min_limit_perf < lowest_perf)
commit 18d9b5227121 ("cpufreq/amd-pstate: Use nominal perf for limits when boost is disabled") introduced different semantics for min/max limits based upon whether the user turned off boost from sysfs. This however is not necessary when the highest perf value is the boost numerator. Suggested-by: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com> Fixes: 18d9b5227121 ("cpufreq/amd-pstate: Use nominal perf for limits when boost is disabled") Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> --- drivers/cpufreq/amd-pstate.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)