mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ananthu C V <ananthu.cv@oss.qualcomm.com>
To: Dietmar Eggemann <dietmar.eggemann@arm.com>
Cc: Vincent Guittot <vincent.guittot@linaro.org>,
	Sudeep Holla <sudeep.holla@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Danilo Krummrich <dakr@kernel.org>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Jie Zhan <zhanjie9@hisilicon.com>,
	Pierre Gondois <pierre.gondois@arm.com>,
	linux-kernel@vger.kernel.org, driver-core@lists.linux.dev,
	linux-pm@vger.kernel.org,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Oleg Keri <okerixx@gmail.com>
Subject: Re: [PATCH v3 2/2] cpufreq: fix policy max not returning to non-boost freq on boost disable
Date: Wed, 11 Nov 2026 17:57:19 +0530	[thread overview]
Message-ID: <avRfJ8ikcDJsfrqO@hu-anancv-blr.qualcomm.com> (raw)
In-Reply-To: <33d9cbb5-d4fb-4f16-b63e-5ae89051952a@arm.com>

Hi Dietmar,

On Mon, Oct 12, 2026 at 01:42:39AM +0200, Dietmar Eggemann wrote:
> On 29.09.26 13:38, Ananthu C V wrote:
> > Commit 538b0188da46 ("cpufreq: ACPI: Set cpuinfo.max_freq directly if
> > max boost is known") introduced a guard for cpuinfo max updates to only
> > increase, to preserve driver-set values above the freq table maximum.
> > Later commit db80ad776cd2 ("cpufreq: Remove driver default policy->min/max
> > init") dropped the 'policy->max = max_freq' assignment from
> > cpufreq_frequency_table_cpuinfo, leaving that one-way-guard to be the only
> > path for cpuinfo max and consequently policy max to be updated, causing
> > both values to be stuck at boost frequency even when boost is disabled.
> > 
> > Unconditionally track the highest non-boost frequency (max_base_freq)
> > in the freq table. If boost frequencies are available, use the highest
> > frequency from the table/max_base_freq instead of cpuinfo->max_freq to
> > control boost values, so the value can decrease again when boost is
> > disabled.
> > 
> > Fixes: db80ad776cd2 ("cpufreq: Remove driver default policy->min/max init")
> > Signed-off-by: Ananthu C V <ananthu.cv@oss.qualcomm.com>
> > ---
> >  drivers/cpufreq/cpufreq.c    | 16 +++++++++++++++-
> >  drivers/cpufreq/freq_table.c |  9 ++++++++-
> >  include/linux/cpufreq.h      |  3 +++
> >  3 files changed, 26 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> > index 96515880b4ac..5e6afb6f8826 100644
> > --- a/drivers/cpufreq/cpufreq.c
> > +++ b/drivers/cpufreq/cpufreq.c
> > @@ -574,6 +574,8 @@ static ssize_t show_local_boost(struct cpufreq_policy *policy, char *buf)
> >  
> >  static int policy_set_boost(struct cpufreq_policy *policy, bool enable)
> >  {
> > +	unsigned int max_freq;
> > +	unsigned int max_table_freq;
> >  	int ret;
> >  
> >  	if (policy->boost_enabled == enable)
> > @@ -587,7 +589,19 @@ static int policy_set_boost(struct cpufreq_policy *policy, bool enable)
> >  		return ret;
> >  	}
> >  
> > -	ret = freq_qos_update_request(&policy->boost_freq_req, policy->cpuinfo.max_freq);
> > +	max_table_freq = cpufreq_frequency_table_max(policy);
> > +
> > +	if (policy_has_boost_freq(policy)) {
> > +		max_freq = enable ? max_table_freq : policy->cpuinfo.max_base_freq;
> > +
> > +		if (!max_freq)
> > +			/* when the freq table contains only boost frequencies */
> > +			max_freq = max_table_freq;
> > +	} else {
> > +		max_freq = policy->cpuinfo.max_freq;
> > +	}
> > +
> > +	ret = freq_qos_update_request(&policy->boost_freq_req, max_freq);
> 
> This looks pretty convoluted. You have to find the correct freq argument
> for freq_qos_update_request() for freq_table drivers but work around
> this for e.g. the CPPC driver.

We do need quite a bit of wrangling to account for every case, which is why I
didn't like the idea of having to deal with all of this in core to begin with.
My initial idea (revision 1) was to simply drop the one way guard from core
and have the drivers deal with it in some way, but we wanted to keep it,
I suppose. I am open for suggestions, but my guess is that if we have to keep
implementing these fixes in core itself, it will be convoluted in one way or
other.

Best,
Ananthu

  reply	other threads:[~2026-11-11 12:27 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-29 11:38 [PATCH v3 0/2] sched/cpufreq: fix schedutil's boost frequency handling Ananthu C V
2026-09-29 11:38 ` [PATCH v3 1/2] arch_topology: seed capacity_freq_ref with highest available frequency Ananthu C V
2026-10-11 14:16   ` Zhongqiu Han
2026-10-12 18:45     ` Dietmar Eggemann
2026-10-13 11:28       ` Zhongqiu Han
2026-11-11 12:10         ` Ananthu C V
2026-11-11 12:12     ` Ananthu C V
2026-09-29 11:38 ` [PATCH v3 2/2] cpufreq: fix policy max not returning to non-boost freq on boost disable Ananthu C V
2026-10-11 14:17   ` Zhongqiu Han
2026-11-11 12:21     ` Ananthu C V
2026-10-11 23:42   ` Dietmar Eggemann
2026-11-11 12:27     ` Ananthu C V [this message]
2026-11-02  8:38   ` Viresh Kumar
2026-11-11 12:40     ` Ananthu C V
2026-09-30  9:10 ` [PATCH v3 0/2] sched/cpufreq: fix schedutil's boost frequency handling Oleg Keri

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=avRfJ8ikcDJsfrqO@hu-anancv-blr.qualcomm.com \
    --to=ananthu.cv@oss.qualcomm.com \
    --cc=dakr@kernel.org \
    --cc=dietmar.eggemann@arm.com \
    --cc=driver-core@lists.linux.dev \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=okerixx@gmail.com \
    --cc=pierre.gondois@arm.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=rafael@kernel.org \
    --cc=sudeep.holla@kernel.org \
    --cc=vincent.guittot@linaro.org \
    --cc=viresh.kumar@linaro.org \
    --cc=zhanjie9@hisilicon.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®