Re: [PATCH v2] cpufreq: Avoid get_governor() for first policy
From: Rafael J. Wysocki
Date: Tue Aug 19 2025 - 15:15:04 EST
On Fri, Jul 25, 2025 at 11:11 AM zhenglifeng (A)
<zhenglifeng1@xxxxxxxxxx> wrote:
>
> On 2025/7/25 12:14, Zihuan Zhang wrote:
>
> > When a cpufreq driver registers the first policy, it may attempt to
> > initialize the policy governor from `last_governor`. However, this is
> > meaningless for the first policy instance, because `last_governor` is
> > only updated when policies are removed (e.g. during CPU offline).
> >
> > The `last_governor` mechanism is intended to restore the previously
> > used governor across CPU hotplug events. For the very first policy,
> > there is no "previous governor" to restore, so calling
> > get_governor(last_governor) is unnecessary and potentially confusing.
> >
> > This patch skips looking up `last_governor` when registering the first
> > policy. Instead, it directly uses the default governor after all
> > governors have been registered and are available.
> >
> > This avoids meaningless lookups, reduces unnecessary module reference
> > handling, and simplifies the initial policy path.
> >
> > Signed-off-by: Zihuan Zhang <zhangzihuan@xxxxxxxxxx>
> >
> > ---
> > Changes in v2:
> > - Fix the case where the governor is NULL.
> > ---
> > ---
> > drivers/cpufreq/cpufreq.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> > index d7426e1d8bdd..1aa559f53479 100644
> > --- a/drivers/cpufreq/cpufreq.c
> > +++ b/drivers/cpufreq/cpufreq.c
> > @@ -1122,7 +1122,8 @@ static int cpufreq_init_policy(struct cpufreq_policy *policy)
> >
> > if (has_target()) {
> > /* Update policy governor to the one used before hotplug. */
> > - gov = get_governor(policy->last_governor);
> > + if (policy->last_governor[0] != '\0')
> > + gov = get_governor(policy->last_governor);
> > if (gov) {
> > pr_debug("Restoring governor %s for cpu %d\n",
> > gov->name, policy->cpu);
>
> Reviewed-by: Lifeng Zheng <zhenglifeng1@xxxxxxxxxx>
Applied as 6.18 material, thanks!