From: Pierre Gondois <pierre.gondois@arm.com>
To: Sumit Gupta <sumitg@nvidia.com>,
"zhenglifeng (A)" <zhenglifeng1@huawei.com>,
rafael@kernel.org, viresh.kumar@linaro.org
Cc: linux-tegra@vger.kernel.org, linux-pm@vger.kernel.org,
ray.huang@amd.com, corbet@lwn.net, robert.moore@intel.com,
lenb@kernel.org, acpica-devel@lists.linux.dev,
mario.limonciello@amd.com, rdunlap@infradead.org,
linux-kernel@vger.kernel.org, gautham.shenoy@amd.com,
zhanjie9@hisilicon.com, ionela.voinescu@arm.com,
perry.yuan@amd.com, linux-doc@vger.kernel.org,
linux-acpi@vger.kernel.org, treding@nvidia.com,
jonathanh@nvidia.com, vsethi@nvidia.com, ksitaraman@nvidia.com,
sanjayc@nvidia.com, nhartman@nvidia.com, bbasu@nvidia.com
Subject: Re: [PATCH v5 10/11] cpufreq: CPPC: make scaling_min/max_freq read-only when auto_sel enabled
Date: Fri, 16 Jan 2026 18:05:31 +0100 [thread overview]
Message-ID: <66f58f43-631b-40a0-8d42-4e90cd24b757@arm.com> (raw)
In-Reply-To: <0d1a10e8-a8d5-4d27-bd16-0443d5408ca6@nvidia.com>
On 1/15/26 16:22, Sumit Gupta wrote:
>
>>>> n 08/01/26 22:16, Pierre Gondois wrote:
>>>>> External email: Use caution opening links or attachments
>>>>>
>>>>>
>>>>> Hello Sumit, Lifeng,
>>>>>
>>>>> On 12/23/25 13:13, Sumit Gupta wrote:
>>>>>> When autonomous selection (auto_sel) is enabled, the hardware
>>>>>> controls
>>>>>> performance within min_perf/max_perf register bounds making the
>>>>>> scaling_min/max_freq effectively read-only.
>>>>> If auto_sel is set, the governor associated to the policy will
>>>>> have no
>>>>> actual control.
>>>>>
>>>>> E.g.:
>>>>> If the schedutil governor is used, attempts to set the
>>>>> frequency based on CPU utilization will be periodically
>>>>> sent, but they will have no effect.
>>>>>
>>>>> The same thing will happen for the ondemand, performance,
>>>>> powersave, userspace, etc. governors. They can only work if
>>>>> frequency requests are taken into account.
>>>>>
>>>>> ------------
>>>>>
>>>>> This looks like the intel_pstate governor handling where it is
>>>>> possible
>>>>> not to have .target() or .target_index() callback and the hardware
>>>>> is in
>>>>> charge (IIUC).
>>>>> For this case, only 2 governor seem available: performance and
>>>>> powersave.
>>>>>
>> As you mentioned in [2], 'it still makes sense to have cpufreq
>> requesting a
>> certain performance level even though autonomous selection is
>> enabled'. So I
>> think it's OK to have a governor when auto_selection is enabled.
>>
Thanks for the pointer, I forgot the spec said said that the
desired_perf register
could still be used while autonomous selection is activated. This means that
having an autonomous selection governor is not a good idea and that your
implementation is correct.
I'm asking some questions about this to someone who should know more.
Would it still be possible to split you patch in two as you suggested in
another
message, i.e. PATCH[1-7] and PATCH[8-11] ? I don't have any additional
comment
for PATCH[1-7], but I might have some questions for PATCH[8-11]. This would
give me a bit more time.
>> [2]
>> https://lore.kernel.org/all/9f46991d-98c3-41f5-8133-6612b397e33a@arm.com/
>>
>>> Thanks for pointing me to the first version, I forgot how your
>>> first implementation was.
>>>
>>>
>>>> In v1 [1], I added a separate cppc_cpufreq_epp_driver instance without
>>>> target*() hooks, using setpolicy() instead (similar to AMD pstate).
>>>> However, this approach doesn't allow per-CPU control: if we boot
>>>> with the
>>>> EPP driver, we can't dynamically disable auto_sel for individual
>>>> CPUs and
>>>> return to OS governor control (no target hook available). AMD and
>>>> Intel
>>>> pstate drivers seem to set HW autonomous mode for all CPUs globally,
>>>> not per-CPU. So, changed it in v2.
>>>> [1]
>>>> https://lore.kernel.org/lkml/20250211103737.447704-6-sumitg@nvidia.com/
>>>>
>>>>
>>> Ok right.
>>> This is something I don't really understand in the current intel/amd
>>> cpufreq
>>> drivers. FWIU:
>>> - the cpufreq drivers abstractions allow to access different hardware
>>> - the governor abstraction allows to switch between different
>>> algorithms
>>> to select the 'correct' frequency.
>>>
>>> So IMO switching to autonomous selection should be done by switching
>>> to another governor and the 'auto_sel' file should not be accessible
>>> to users.
The cpufreq driver / governor abstraction still seems a bit stretched
for the CPPC
case. Indeed, cpufreq uses:
- .setpolicy() callback and CPUFREQ_POLICY_XXX policies to allow
external scaling
algorithms
- .target() and .target_index() callbacks and scaling governors for
internal scaling
algorithms
But if CPPC allows to use both internal/external algorithms at the same
time,
so for instance it is unknown what the 'performance' governor should be
converted to:
- using the the linux drivers/cpufreq/cpufreq_performance.c governor
- setting the energy performance preference to the maximum perf. value
with auto_sel=0
- setting the energy performance preference to the maximum perf. value
with auto_sel=1
------------
Right not selecting the 'performance' or 'powersave' policy gives a
clear result
for pstate as autonomous selection is alwasy enabled IIUC. It would be nice
if we could switch between an 'autonomous_performance' and
'non_autonomous_performance' without manually toggling the auto_sel file.
next prev parent reply other threads:[~2026-01-16 17:06 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-23 12:12 [PATCH v5 00/11] Enhanced autonomous selection and improvements Sumit Gupta
2025-12-23 12:12 ` [PATCH v5 01/11] cpufreq: CPPC: Add generic helpers for sysfs show/store Sumit Gupta
2025-12-25 3:41 ` zhenglifeng (A)
2026-01-08 13:31 ` Sumit Gupta
2025-12-23 12:12 ` [PATCH v5 02/11] ACPI: CPPC: Clean up cppc_perf_caps and cppc_perf_ctrls structs Sumit Gupta
2026-01-08 13:43 ` Pierre Gondois
2025-12-23 12:12 ` [PATCH v5 03/11] ACPI: CPPC: Add cppc_get_perf() API to read performance controls Sumit Gupta
2025-12-25 8:21 ` zhenglifeng (A)
2026-01-08 13:36 ` Sumit Gupta
2025-12-23 12:13 ` [PATCH v5 04/11] ACPI: CPPC: Extend cppc_set_epp_perf() to support auto_sel and epp Sumit Gupta
2025-12-25 3:56 ` zhenglifeng (A)
2026-01-08 13:39 ` Sumit Gupta
2026-01-16 15:59 ` Pierre Gondois
2025-12-23 12:13 ` [PATCH v5 05/11] ACPI: CPPC: add APIs and sysfs interface for min/max_perf Sumit Gupta
2025-12-25 9:03 ` zhenglifeng (A)
2025-12-23 12:13 ` [PATCH v5 06/11] ACPI: CPPC: add APIs and sysfs interface for perf_limited Sumit Gupta
2025-12-25 12:06 ` zhenglifeng (A)
2026-01-08 14:38 ` Sumit Gupta
2026-01-15 8:01 ` zhenglifeng (A)
2025-12-23 12:13 ` [PATCH v5 07/11] cpufreq: CPPC: Add sysfs for min/max_perf and perf_limited Sumit Gupta
2025-12-24 18:32 ` kernel test robot
2025-12-26 0:20 ` Bagas Sanjaya
2026-01-08 14:30 ` Sumit Gupta
2025-12-23 12:13 ` [PATCH v5 08/11] cpufreq: CPPC: sync policy limits when updating min/max_perf Sumit Gupta
2025-12-25 13:56 ` zhenglifeng (A)
2026-01-08 13:53 ` Sumit Gupta
2026-01-15 8:20 ` zhenglifeng (A)
2025-12-23 12:13 ` [PATCH v5 09/11] cpufreq: CPPC: sync policy limits when toggling auto_select Sumit Gupta
2025-12-26 2:55 ` zhenglifeng (A)
2026-01-08 14:21 ` Sumit Gupta
2026-01-15 8:57 ` zhenglifeng (A)
2025-12-23 12:13 ` [PATCH v5 10/11] cpufreq: CPPC: make scaling_min/max_freq read-only when auto_sel enabled Sumit Gupta
2025-12-26 3:26 ` zhenglifeng (A)
2026-01-08 14:01 ` Sumit Gupta
2026-01-08 16:46 ` Pierre Gondois
2026-01-09 14:37 ` Sumit Gupta
2026-01-12 11:44 ` Pierre Gondois
2026-01-15 12:32 ` zhenglifeng (A)
2026-01-15 15:22 ` Sumit Gupta
2026-01-16 17:05 ` Pierre Gondois [this message]
2026-01-15 15:15 ` Sumit Gupta
2025-12-23 12:13 ` [PATCH v5 11/11] cpufreq: CPPC: add autonomous mode boot parameter support Sumit Gupta
2025-12-26 8:03 ` zhenglifeng (A)
2026-01-08 14:04 ` Sumit Gupta
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=66f58f43-631b-40a0-8d42-4e90cd24b757@arm.com \
--to=pierre.gondois@arm.com \
--cc=acpica-devel@lists.linux.dev \
--cc=bbasu@nvidia.com \
--cc=corbet@lwn.net \
--cc=gautham.shenoy@amd.com \
--cc=ionela.voinescu@arm.com \
--cc=jonathanh@nvidia.com \
--cc=ksitaraman@nvidia.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mario.limonciello@amd.com \
--cc=nhartman@nvidia.com \
--cc=perry.yuan@amd.com \
--cc=rafael@kernel.org \
--cc=ray.huang@amd.com \
--cc=rdunlap@infradead.org \
--cc=robert.moore@intel.com \
--cc=sanjayc@nvidia.com \
--cc=sumitg@nvidia.com \
--cc=treding@nvidia.com \
--cc=viresh.kumar@linaro.org \
--cc=vsethi@nvidia.com \
--cc=zhanjie9@hisilicon.com \
--cc=zhenglifeng1@huawei.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