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

From: Marco Scardovi

Date: Wed Jun 10 2026 - 03:16:28 EST


In data martedì 9 giugno 2026 15:48:57 Ora legale dell’Europa centrale, Mario
Limonciello ha scritto:
> 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).

Well, thank both of you in first place for the patience in helping me figuring
it out and testing my patches.