From: Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>
To: Lukasz Luba <lukasz.luba@arm.com>,
"Rafael J. Wysocki (Intel)" <rafael@kernel.org>
Cc: Viresh Kumar <viresh.kumar@linaro.org>,
Guo Chen <guo.chen@oss.qualcomm.com>,
Vincent Donnefort <vincent.donnefort@arm.com>,
Matthias Kaehlcke <mka@chromium.org>,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org, xin.liu@oss.qualcomm.com,
aiqun.yu@oss.qualcomm.com, tengfei.fan@oss.qualcomm.com,
tingwei.zhang@oss.qualcomm.com,
Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>
Subject: Re: [PATCH v2] PM: EM: Exclude boost frequencies from inefficiency ranking
Date: Tue, 10 Nov 2026 22:55:57 +0800 [thread overview]
Message-ID: <ec04f795-6cc6-444a-bbee-70c7982932e3@oss.qualcomm.com> (raw)
In-Reply-To: <bb99aa3f-fd15-4bdd-9319-ccedffc281c8@arm.com>
On 11/10/2026 10:05 PM, Lukasz Luba wrote:
>
>
> On 11/10/26 13:43, Rafael J. Wysocki (Intel) wrote:
>> On Tue, Nov 10, 2026 at 2:11 PM Lukasz Luba <lukasz.luba@arm.com> wrote:
>>>
>>> Hi Rafael,
>>>
>>> On 11/10/26 12:15, Rafael J. Wysocki (Intel) wrote:
>>>> On Tue, Nov 10, 2026 at 10:58 AM Lukasz Luba <lukasz.luba@arm.com>
>>>> wrote:
>>>
>>> [snip]
>>>
>>>
>>>>>
>>>>> That's fine, please continue.
>>>>
>>>> I have a couple of questions though.
>>>>
>>>> First, why is the ondemand governor mentioned in the changelog? In
>>>> the mainline, the ondemand governor cannot work with EAS, so it
>>>> shouldn't matter for this issue, should it?
>>>
>>> The ondemand is affected by the EM setup code and set 'inefficient'
>>> flags for some OPPs. The EM is also present for cooling devices
>>> and can work w/o EAS and schedutil, w/ just ondemand governor.
>>>
>>> Because EM marks the OPPs kind of 'globally' as inefficient, then
>>> they become CPUFREQ_INEFFICIENT_FREQ entries in the CPUfreq fwk.
>>> In the EM code we have:
>>> cpufreq_table_set_inefficient(policy, table[i].frequency);
>>
>> So maybe this is the one that needs to be fixed? What about simply
>> skipping boost frequencies in it?
>>
>>> Then ondemand check for CPUFREQ_RELATION_HE will skip them and
>>> pass to __cpufreq_driver_target() with that flags as well.
>>
>> Thanks for explaining and all of that needs to be said in the patch
>> changelog.
>>
>>>>
>>>> Second, why is the issue regarded as a defect in the code and not in
>>>> the energy model? Arguably, boost frequencies should be more costly
>>>> than the non-boost ones. At least the idea behind the boost is making
>>>> higher-cost OPPs temporarily available. If they are sustainable,
>>>> treating them as boost OPPs is rather pointless.
>>>
>>> IMHO it was a bug in the commit mentioned in this patch fix tag.
>>> It is affecting more than just EAS or EM, since the EM is working with
>>> all generic code and all cpufreq governors.
>>
>> To be precise, the EM initialization may affect cpufreq in general
>> because inefficient frequencies are used for CPU cooling. Fair
>> enough, but I'm not talking about this.
>>
>> I'm talking about a reason for giving boost frequencies lower or equal
>> cost relative to non-boost frequencies in the energy model because
>> this doesn't make sense to me TBH.
>>
>> And I get that such energy models were there before the commit in
>> question and now they are not working properly, but IMO they are
>> broken, not that commit.
>>
>>>>
>>>> TBH, I'm too comfortable with looking at cpufreq frequency from within
>>>> the EM code. If that needs to be done, something is amiss at the
>>>> design level.
>>>
>>> I think this edge case is special, as I described above.
>>>
>>> I'm happy to hear your view on this EM influence to some global
>>> setting in cpufreq. Maybe it was too far to establish this
>>> 'inefficiency' flags in there for many usage?
>>
>> There's nothing wrong with using the information from the energy
>> model, when available, to amend cpufreq, but the patch goes the other
>> way around: It tries to amend the energy model with information taken
>> from cpufreq (in order to avoid making mistakes later when amending
>> cpufreq with the energy model information).
>>
>> I think that cpufreq should simply refuse to set
>> CPUFREQ_INEFFICIENT_FREQ for boost frequencies. Wouldn't that work?
>
> I see your point now, about the direction. Yes, you're right.
>
> Since we are taking the information about 'boost' from the
> cpufreq, then refusing to set OPPs inefficient in the first
> place makes more sense.
>
>
I also agree this should be fixed in cpufreq rather than by feeding
cpufreq information into the EM. However, refusing
CPUFREQ_INEFFICIENT_FREQ for boost frequencies seems not help the
example in the changelog, because the frequency marked as inefficient
there is 4.0 GHz, which is not a boost one. The problem is not specific
to boost either: with 3.9 GHz, 4.0 GHz, 4.1 GHz and a 4.2 GHz boost OPP
at costs C - d, C, C and C + d, 4.0 GHz is rightly inefficient, but if
policy->max is capped at 4.0 GHz by scaling_max_freq, thermal or QoS,
RELATION_HE for 4.0 GHz still resolves to 3.9 GHz. I think the lookup
should not skip an inefficient frequency when the next efficient
frequency above it is beyond the max limit, which can be done in
cpufreq_frequency_table_target() without touching the EM or looking at
boost flags.
>
--
Thx and BRs,
Zhongqiu Han
next prev parent reply other threads:[~2026-11-10 14:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 11:21 Guo Chen
2026-11-05 13:23 ` Lukasz Luba
2026-11-06 15:15 ` Rafael J. Wysocki (Intel)
2026-11-09 6:47 ` Guo Chen
2026-11-09 9:40 ` Lukasz Luba
2026-11-10 9:49 ` Guo Chen
2026-11-10 9:58 ` Lukasz Luba
2026-11-10 12:15 ` Rafael J. Wysocki (Intel)
2026-11-10 13:11 ` Lukasz Luba
2026-11-10 13:43 ` Rafael J. Wysocki (Intel)
2026-11-10 14:05 ` Lukasz Luba
2026-11-10 14:55 ` Zhongqiu Han [this message]
2026-11-10 14:59 ` Rafael J. Wysocki (Intel)
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=ec04f795-6cc6-444a-bbee-70c7982932e3@oss.qualcomm.com \
--to=zhongqiu.han@oss.qualcomm.com \
--cc=aiqun.yu@oss.qualcomm.com \
--cc=guo.chen@oss.qualcomm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lukasz.luba@arm.com \
--cc=mka@chromium.org \
--cc=rafael@kernel.org \
--cc=stable@vger.kernel.org \
--cc=tengfei.fan@oss.qualcomm.com \
--cc=tingwei.zhang@oss.qualcomm.com \
--cc=vincent.donnefort@arm.com \
--cc=viresh.kumar@linaro.org \
--cc=xin.liu@oss.qualcomm.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®