[PATCH v2 0/9] amd-pstate: Introduce AMD CPPC Performance Priority

From: Gautham R. Shenoy

Date: Wed Mar 11 2026 - 10:03:02 EST


Hello,

This is the v2 of the patchset to add support to the amd-pstate driver
for a new feature named "CPPC Performance Priority" that will be
available on some of the future AMD processors.

Details of the feature can be found in the AMD Publication titled
"AMD64 Collaborative Processor Performance Control (CPPC) Performance
Priority" (https://docs.amd.com/v/u/en-US/69206_1.10_AMD64_CPPC_PUB)

v1 --> v2 Changes:
* Picked up the Reviewed-by: tags from Boris and Mario for a couple of patches.

* Defined AMD_CPPC_FLOOR_PERF_CNT_MASK via GENMASK_ULL() instead of
GENMASK() to fix the build errors reported by the kernel test robot
(https://lore.kernel.org/lkml/202603070431.ykswVnpp-lkp@xxxxxxxxx/)

* Moved the code from amd_pstate_cache_cppc_req2() into
amd_pstate_init_floor_perf() since there are no other callers of
amd_pstate_cache_cppc_req2().

* Cached the user requested amd_pstate_floor_freq into
cpudata->floor_freq [Prateek] and return the same when the user
reads the syfs file.

Description:

This feature allows userspace to specify different floor performance
levels for different CPUs. The platform firmware takes these different
floor performance levels into consideration while throttling the CPUs
under power/thermal constraints.

The presence of this feature is advertised through bit 16 of EDX
register for CPUID leaf 0x80000007. The number of distinct floor
performance levels supported on the platform will be advertised
through the bits 32:39 of the MSR_AMD_CPPC_CAP1. Bits 0:7 of a new MSR
MSR_AMD_CPPC_REQ2 (0xc00102b5) will be used to specify the desired
floor performance level for that CPU.

Key changes made by this patchset:

* Fix a memory leak bug and a control-flow bug.

* Plumb in proper visibility controls for the freq_attr attributes
so that only relevant attributes can be made visible depending on
the underlying platform and the current amd-pstate driver mode.

* Add support for the new CPUID bits, the new MSR and parsing bits
32:39 of MSR_AMD_CPPC_CAP1.

* Set the default value for MSR_AMD_CPPC_REQ2[0:7] (Floor perf) to
CPPC.nominal_perf when the value at boot-time is lower than
CPPC.lowest_perf

* Add sysfs support for floor_freq and floor_count

* Introduce a tracepoint trace_amd_pstate_cppc_req2 for tracking
the updates to MSR_AMD_CPPC_REQ2.

* Add documentation for amd_pstate_floor_{freq,count}


Gautham R. Shenoy (9):
amd-pstate: Fix memory leak in amd_pstate_epp_cpu_init()
amd-pstate: Update cppc_req_cached in fast_switch case
amd-pstate: Make certain freq_attrs conditionally visible
x86/cpufeatures: Add AMD CPPC Performance Priority feature.
amd-pstate: Add support for CPPC_REQ2 and FLOOR_PERF
amd-pstate: Add sysfs support for floor_freq and floor_count
amd-pstate: Introduce a tracepoint trace_amd_pstate_cppc_req2()
Documentation/amd-pstate: List prefcore related sysfs files
Documentation/amd-pstate: Add documentation for amd_pstate_floor_{freq,count}

Documentation/admin-guide/pm/amd-pstate.rst | 47 +++-
arch/x86/include/asm/cpufeatures.h | 2 +-
arch/x86/include/asm/msr-index.h | 5 +
arch/x86/kernel/cpu/scattered.c | 1 +
drivers/cpufreq/amd-pstate-trace.h | 35 +++
drivers/cpufreq/amd-pstate.c | 254 +++++++++++++++++---
drivers/cpufreq/amd-pstate.h | 7 +
tools/arch/x86/include/asm/cpufeatures.h | 2 +-
8 files changed, 313 insertions(+), 40 deletions(-)

--
2.34.1