Re: [PATCH v6 0/3] cpufreq/amd-pstate: Fix EPP and auto_sel initialization

From: Mario Limonciello

Date: Tue Jun 09 2026 - 09:54:44 EST




On 6/9/26 02:29, Marco Scardovi wrote:
Hi Mario, Prateek,

no big deal making a v6 with your suggestions. I'm glad this series come to an end
and everything works as expected.

Here is v6 of the series addressing the feedback on EPP and auto_sel initialization.
This version updates the metadata with Reviewed-by and Tested-by tags and applies
a small commit message cleanup.

Changes in v6:
- Add K Prateek Nayak's Reviewed-by and Tested-by tags to all patches.
- Drop the redundant paragraph from the commit message of Patch 3.

Changes in v5:
- Split the single unified patch into a 3-patch series:
- Patch 1: Change EPP helper return types to signed int and add error handling
in amd_pstate_epp_cpu_init().
- Patch 2: Remove the active-mode early return check in shmem_init_perf() to
ensure auto_sel is properly toggled on shared memory systems.
- Patch 3: Cache the initial firmware programmed EPP value in cppc_req_cached.

Changes in v4:
- Refactor EPP getter helper functions (msr_get_epp, shmem_get_epp, and
amd_pstate_get_epp) to return int, conforming to standard kernel practice
for value-or-negative-errno helpers.
- Clean up commit message description to link error propagation directly to
EPP caching.
- Execute the remaining shared-memory initialization path even when booting
in active mode, rather than bypassing it through an early return.

Changes in v3:
- Patch 1: Cache the firmware-programmed default EPP value at CPU EPP
initialization (resolving the boot-time false cache hit) and explicitly
toggle the AUTO_SEL_ENABLE register to 1 on shared memory systems,
rather than utilizing a state-tracking flag as proposed in v2.
- Patch 2: Dropped as CPPC systems universally support EPP.

Changes in v2:
- Patch 1: Rename `epp_initialized` to `epp_hw_programmed` and add a comment
documenting the EPP cache guard optimization behavior.
- Patch 2: Add comments explaining the uniform CPU capability check on x86,
handle EPP capability check errors robustly (only treat -EOPNOTSUPP as
unsupported, warn and assume supported for other errors to avoid false
negatives), and reject runtime active mode transitions at sysfs store time
(preventing the driver from being left in an unregistered state).

Changes in v1:
- Fix the boot-time CPPC EPP/auto_sel initialization regression in
shmem_set_epp() using a state tracking flag while preserving runtime
cache optimization.
- Add an EPP capability check helper during initialization.
- Fall back to passive mode at boot if EPP is not supported, and reject
transitions to active mode at runtime if EPP is not supported.

Marco Scardovi (3):
cpufreq/amd-pstate: Fix EPP return type and handle errors during
initialization
cpufreq/amd-pstate: Toggle auto_sel in active mode on shared memory
systems
cpufreq/amd-pstate: Cache the firmware programmed EPP value

drivers/cpufreq/amd-pstate.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)


Thanks, this all looks good now. Appreciate the patience, and thanks for taking all the feedback into account.

I will add it to my tree and it will go for next cycle (7.3).