All callers of amd_pstate_update() already have a reference to the
cpufreq_policy object.
Pass the entire policy object and grab the cpudata using
"policy->driver_data" instead of passing the cpudata and unnecessarily
grabbing another read-side reference to the cpufreq policy object when
it is already available in the caller.
No functional changes intended.
Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com>
---
changelog v3..v4:
o No changes.
---
drivers/cpufreq/amd-pstate.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
index 5aa9fcd80cf5..5faccb3d6b14 100644
--- a/drivers/cpufreq/amd-pstate.c
+++ b/drivers/cpufreq/amd-pstate.c
@@ -565,15 +565,12 @@ static inline bool amd_pstate_sample(struct amd_cpudata *cpudata)
return true;
}
-static void amd_pstate_update(struct amd_cpudata *cpudata, u8 min_perf,
+static void amd_pstate_update(struct cpufreq_policy *policy, u8 min_perf,
u8 des_perf, u8 max_perf, bool fast_switch, int gov_flags)
{
- struct cpufreq_policy *policy __free(put_cpufreq_policy) = cpufreq_cpu_get(cpudata->cpu);
+ struct amd_cpudata *cpudata = policy->driver_data;
union perf_cached perf = READ_ONCE(cpudata->perf);
- if (!policy)
- return;
-
/* limit the max perf when core performance boost feature is disabled */
if (!cpudata->boost_supported)
max_perf = min_t(u8, perf.nominal_perf, max_perf);
@@ -688,7 +685,7 @@ static int amd_pstate_update_freq(struct cpufreq_policy *policy,
if (!fast_switch)
cpufreq_freq_transition_begin(policy, &freqs);
- amd_pstate_update(cpudata, perf.min_limit_perf, des_perf,
+ amd_pstate_update(policy, perf.min_limit_perf, des_perf,
perf.max_limit_perf, fast_switch,
policy->governor->flags);
@@ -750,7 +747,7 @@ static void amd_pstate_adjust_perf(unsigned int cpu,
if (max_perf < min_perf)
max_perf = min_perf;
- amd_pstate_update(cpudata, min_perf, des_perf, max_perf, true,
+ amd_pstate_update(policy, min_perf, des_perf, max_perf, true,
policy->governor->flags);
}
--
2.34.1
On 16-03-26, 08:18, K Prateek Nayak wrote: > All callers of amd_pstate_update() already have a reference to the > cpufreq_policy object. > > Pass the entire policy object and grab the cpudata using > "policy->driver_data" instead of passing the cpudata and unnecessarily > grabbing another read-side reference to the cpufreq policy object when > it is already available in the caller. > > No functional changes intended. > > Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org> > Acked-by: Viresh Kumar <viresh.kumar@linaro.org> > Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com> > --- > changelog v3..v4: > > o No changes. > --- > drivers/cpufreq/amd-pstate.c | 11 ++++------- > 1 file changed, 4 insertions(+), 7 deletions(-) Acked-by: Viresh Kumar <viresh.kumar@linaro.org> -- viresh
On 02-04-26, 12:07, Viresh Kumar wrote: > On 16-03-26, 08:18, K Prateek Nayak wrote: > > All callers of amd_pstate_update() already have a reference to the > > cpufreq_policy object. > > > > Pass the entire policy object and grab the cpudata using > > "policy->driver_data" instead of passing the cpudata and unnecessarily > > grabbing another read-side reference to the cpufreq policy object when > > it is already available in the caller. > > > > No functional changes intended. > > > > Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org> > > Acked-by: Viresh Kumar <viresh.kumar@linaro.org> > > Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com> > > --- > > changelog v3..v4: > > > > o No changes. > > --- > > drivers/cpufreq/amd-pstate.c | 11 ++++------- > > 1 file changed, 4 insertions(+), 7 deletions(-) > > Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Oops, I already Acked it once :) It is ready for Rafael to pick now. -- viresh
On 4/2/26 01:39, Viresh Kumar wrote: > On 02-04-26, 12:07, Viresh Kumar wrote: >> On 16-03-26, 08:18, K Prateek Nayak wrote: >>> All callers of amd_pstate_update() already have a reference to the >>> cpufreq_policy object. >>> >>> Pass the entire policy object and grab the cpudata using >>> "policy->driver_data" instead of passing the cpudata and unnecessarily >>> grabbing another read-side reference to the cpufreq policy object when >>> it is already available in the caller. >>> >>> No functional changes intended. >>> >>> Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org> >>> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> >>> Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com> >>> --- >>> changelog v3..v4: >>> >>> o No changes. >>> --- >>> drivers/cpufreq/amd-pstate.c | 11 ++++------- >>> 1 file changed, 4 insertions(+), 7 deletions(-) >> >> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> > > Oops, I already Acked it once :) > > It is ready for Rafael to pick now. > I'm sending an amd-pstate PR later today after some more testing. I'll pick this up in my PR that goes to Rafael.
Hello Mario, On 4/2/2026 7:22 PM, Mario Limonciello wrote: > On 4/2/26 01:39, Viresh Kumar wrote: >> It is ready for Rafael to pick now. >> > > I'm sending an amd-pstate PR later today after some more testing. > > I'll pick this up in my PR that goes to Rafael. Thanks a ton! Much appreciated. I'll send a separate follow up cleanup to remove the "!policy" check in amd_pstate_adjust_perf() based on Zhongqiu suggestion after some testing if all goes well :-) -- Thanks and Regards, Prateek
On Mon, Mar 16, 2026 at 08:18:48AM +0000, K Prateek Nayak wrote:
> All callers of amd_pstate_update() already have a reference to the
> cpufreq_policy object.
>
> Pass the entire policy object and grab the cpudata using
> "policy->driver_data" instead of passing the cpudata and unnecessarily
> grabbing another read-side reference to the cpufreq policy object when
> it is already available in the caller.
>
> No functional changes intended.
>
> Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
> Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com>
Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
> ---
> changelog v3..v4:
>
> o No changes.
> ---
> drivers/cpufreq/amd-pstate.c | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
> index 5aa9fcd80cf5..5faccb3d6b14 100644
> --- a/drivers/cpufreq/amd-pstate.c
> +++ b/drivers/cpufreq/amd-pstate.c
> @@ -565,15 +565,12 @@ static inline bool amd_pstate_sample(struct amd_cpudata *cpudata)
> return true;
> }
>
> -static void amd_pstate_update(struct amd_cpudata *cpudata, u8 min_perf,
> +static void amd_pstate_update(struct cpufreq_policy *policy, u8 min_perf,
> u8 des_perf, u8 max_perf, bool fast_switch, int gov_flags)
> {
> - struct cpufreq_policy *policy __free(put_cpufreq_policy) = cpufreq_cpu_get(cpudata->cpu);
> + struct amd_cpudata *cpudata = policy->driver_data;
> union perf_cached perf = READ_ONCE(cpudata->perf);
>
> - if (!policy)
> - return;
> -
> /* limit the max perf when core performance boost feature is disabled */
> if (!cpudata->boost_supported)
> max_perf = min_t(u8, perf.nominal_perf, max_perf);
> @@ -688,7 +685,7 @@ static int amd_pstate_update_freq(struct cpufreq_policy *policy,
> if (!fast_switch)
> cpufreq_freq_transition_begin(policy, &freqs);
>
> - amd_pstate_update(cpudata, perf.min_limit_perf, des_perf,
> + amd_pstate_update(policy, perf.min_limit_perf, des_perf,
> perf.max_limit_perf, fast_switch,
> policy->governor->flags);
>
> @@ -750,7 +747,7 @@ static void amd_pstate_adjust_perf(unsigned int cpu,
> if (max_perf < min_perf)
> max_perf = min_perf;
>
> - amd_pstate_update(cpudata, min_perf, des_perf, max_perf, true,
> + amd_pstate_update(policy, min_perf, des_perf, max_perf, true,
> policy->governor->flags);
> }
>
> --
> 2.34.1
>
--
Thanks and Regards
gautham.
© 2016 - 2026 Red Hat, Inc.