From: Beata Michalska <beata.michalska@arm.com>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Prashant Malani <pmalani@google.com>,
open list <linux-kernel@vger.kernel.org>,
"open list:CPU FREQUENCY SCALING FRAMEWORK"
<linux-pm@vger.kernel.org>,
"Rafael J. Wysocki" <rafael@kernel.org>
Subject: Re: [PATCH 1/2] cpufreq: Add driver flag to avoid initial frequency verification
Date: Mon, 25 Aug 2025 09:49:15 +0200 [thread overview]
Message-ID: <aKwVe4WSG7JApUAi@arm.com> (raw)
In-Reply-To: <20250825045641.o2thjvs3xyuxavyk@vireshk-i7>
On Mon, Aug 25, 2025 at 10:26:41AM +0530, Viresh Kumar wrote:
> On 23-08-25, 00:17, Prashant Malani wrote:
> > Some cpufreq drivers have a get() function which can return an unreliable
> > frequency. This can cause issues when switching governors. For instance,
> > a CPU would be on performance governor and have it's frequency (and
> > policy->cur) set to max. When the governor is switched to userspace, the
> > policy->cur is re-used, but it is checked against the frequency returned
> > by the driver's get() function. If it's different, the frequency will
> > get set to the new (incorrect) value.
> >
> > To avoid this, add a flag that avoids this verify step on governor start
> > if the cpufreq driver opts in to it.
> >
> > Since there are no users of this flag, no functional changes are
> > introduced here.
> >
> > Cc: Beata Michalska <beata.michalska@arm.com>
> > Signed-off-by: Prashant Malani <pmalani@google.com>
> > ---
> > drivers/cpufreq/cpufreq.c | 3 ++-
> > include/linux/cpufreq.h | 10 ++++++++++
> > 2 files changed, 12 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> > index b8937737d096..72e6552a40ea 100644
> > --- a/drivers/cpufreq/cpufreq.c
> > +++ b/drivers/cpufreq/cpufreq.c
> > @@ -2482,7 +2482,8 @@ int cpufreq_start_governor(struct cpufreq_policy *policy)
> >
> > pr_debug("%s: for CPU %u\n", __func__, policy->cpu);
> >
> > - cpufreq_verify_current_freq(policy, false);
> > + if (!(cpufreq_driver->flags & CPUFREQ_DONT_VERIFY_FREQ_ON_GOVERNOR_START))
> > + cpufreq_verify_current_freq(policy, false);
>
> I don't think it is okay to do this to hide a driver's failure to
> return the right frequency. What about all the other places where
> get() is still used ? Won't that cause similar issues elsewhere ?
>
> The driver must be fixed for this, not the core. The core is doing the
Agreed.
---
BR
Beata
> right thing here, asking the driver to return the current frequency.
> If the driver is unsure, it can just return the current frequency from
> policy->cur instead.
>
> --
> viresh
next prev parent reply other threads:[~2025-08-25 7:49 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-23 0:17 [PATCH 0/2] cpufreq: CPPC: Avoid cur frequency modification on governor start Prashant Malani
2025-08-23 0:17 ` [PATCH 1/2] cpufreq: Add driver flag to avoid initial frequency verification Prashant Malani
2025-08-25 4:56 ` Viresh Kumar
2025-08-25 7:49 ` Beata Michalska [this message]
2025-08-23 0:17 ` [PATCH 2/2] cpufreq: CPPC: Don't verify cur frequency on governor start Prashant Malani
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aKwVe4WSG7JApUAi@arm.com \
--to=beata.michalska@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=pmalani@google.com \
--cc=rafael@kernel.org \
--cc=viresh.kumar@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.