[PATCH v3 0/1] cpufreq/amd-pstate: Fix EPP initialization for shared memory systems

From: Marco Scardovi

Date: Fri Jun 05 2026 - 06:42:18 EST


Hi Prateek, Mario,

Following discussion, I have dropped the previous second patch (EPP capability
checks) since EPP is supported on all Zen CPUs that support CPPC. The
frequency capping on Zen 2 systems was purely caused by a false cache hit
during driver initialization.

Thus, we consolidate the series to a single patch that fixes the false EPP
cache hit at boot and explicitly toggles AUTO_SEL_ENABLE on shared memory
systems.

If you have a znver2 or 1 under hand please test them as I don't own them.

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 (1):
cpufreq/amd-pstate: Fix EPP initialization for shared memory systems

drivers/cpufreq/amd-pstate.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)

--
2.54.0