[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v8 0/8] amd-cppc CPU Performance Scaling Driver
On 28.08.2025 12:02, Penny Zheng wrote: > amd-cppc is the AMD CPU performance scaling driver that introduces a > new CPU frequency control mechanism on modern AMD APU and CPU series in > Xen. The new mechanism is based on Collaborative Processor Performance > Control (CPPC) which provides finer grain frequency management than > legacy ACPI hardware P-States. Current AMD CPU/APU platforms are using > the ACPI P-states driver to manage CPU frequency and clocks with > switching only in 3 P-states. CPPC replaces the ACPI P-states controls > and allows a flexible, low-latency interface for Xen to directly > communicate the performance hints to hardware. > > amd_cppc driver has 2 operation modes: autonomous (active) mode, > and non-autonomous (passive) mode. We register different CPUFreq driver > for different modes, "amd-cppc" for passive mode and "amd-cppc-epp" > for active mode. > > The passive mode leverages common governors such as *ondemand*, > *performance*, etc, to manage the performance tuning. While the active mode > uses epp to provides a hint to the hardware if software wants to bias > toward performance (0x0) or energy efficiency (0xff). CPPC power algorithm > in hardware will automatically calculate the runtime workload and adjust the > realtime cpu cores frequency according to the power supply and thermal, core > voltage and some other hardware conditions. > > amd-cppc is enabled on passive mode with a top-level `cpufreq=amd-cppc` > option, > while users add extra `active` flag to select active mode. > > With `cpufreq=amd-cppc,active`, we did a 60s sampling test to see the CPU > frequency change, through tweaking the energy_perf preference from > `xenpm set-cpufreq-cppc powersave` to `xenpm set-cpufreq-cppc performance`. > The outputs are as follows: > ``` > Setting CPU in powersave mode > Sampling and Outputs: > Avg freq 580000 KHz > Avg freq 580000 KHz > Avg freq 580000 KHz > Setting CPU in performance mode > Sampling and Outputs: > Avg freq 4640000 KHz > Avg freq 4220000 KHz > Avg freq 4640000 KHz > ``` > > Penny Zheng (8): > xen/cpufreq: introduce new sub-hypercall to propagate CPPC data > xen/cpufreq: introduce "cpufreq=amd-cppc" xen cmdline and amd-cppc > driver > xen/cpufreq: implement amd-cppc driver for CPPC in passive mode > xen/cpufreq: implement amd-cppc-epp driver for CPPC in active mode > xen/cpufreq: get performance policy from governor set via xenpm > tools/cpufreq: extract CPPC para from cpufreq para > xen/cpufreq: bypass governor-related para for amd-cppc-epp > xen/cpufreq: Adapt SET/GET_CPUFREQ_CPPC xen_sysctl_pm_op for amd-cppc > driver > > docs/misc/xen-command-line.pandoc | 14 +- > tools/include/xenctrl.h | 3 +- > tools/libs/ctrl/xc_pm.c | 25 +- > tools/misc/xenpm.c | 94 ++- > xen/arch/x86/acpi/cpufreq/Makefile | 1 + > xen/arch/x86/acpi/cpufreq/amd-cppc.c | 766 ++++++++++++++++++++++ > xen/arch/x86/acpi/cpufreq/cpufreq.c | 69 +- > xen/arch/x86/cpu/amd.c | 8 +- > xen/arch/x86/include/asm/amd.h | 2 + > xen/arch/x86/include/asm/msr-index.h | 6 + > xen/arch/x86/platform_hypercall.c | 19 + > xen/arch/x86/x86_64/cpufreq.c | 19 + > xen/arch/x86/x86_64/platform_hypercall.c | 3 + > xen/drivers/acpi/pm-op.c | 68 +- > xen/drivers/acpi/pmstat.c | 4 + > xen/drivers/cpufreq/cpufreq.c | 137 +++- > xen/drivers/cpufreq/utility.c | 15 + > xen/include/acpi/cpufreq/cpufreq.h | 40 +- > xen/include/acpi/cpufreq/processor_perf.h | 14 +- > xen/include/public/platform.h | 26 + > xen/include/public/sysctl.h | 5 +- > xen/include/xen/pmstat.h | 5 + > xen/include/xlat.lst | 1 + > 23 files changed, 1283 insertions(+), 61 deletions(-) > create mode 100644 xen/arch/x86/acpi/cpufreq/amd-cppc.c Oh, and - what is still missing is a CHANGELOG.md entry. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |