[Public] > -----Original Message----- > From: Jan Beulich <jbeulich@suse.com> > Sent: Wednesday, September 10, 2025 12:11 AM > To: Penny, Zheng <penny.zheng@amd.com> > Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Roger Pau Monné > <roger.pau@citrix.com>; Anthony PERARD <anthony.perard@vates.tech>; Orzel, > Michal <Michal.Orzel@amd.com>; Julien Grall <julien@xen.org>; Stefano > Stabellini <sstabellini@kernel.org>; Juergen Gross <jgross@suse.com>; Oleksii > Kurochko <oleksii.kurochko@gmail.com>; Community Manager > <community.manager@xenproject.org>; xen-devel@lists.xenproject.org > Subject: Re: [PATCH v9 0/8] amd-cppc CPU Performance Scaling Driver > > On 04.09.2025 08:35, 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: embed hwp into struct cpufreq_policy{} > > 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 > > CHANGELOG.md: add amd-cppc/amd-cppc-epp cpufreq driver support > > > > CHANGELOG.md | 1 + > > docs/misc/xen-command-line.pandoc | 9 +- > > tools/include/xenctrl.h | 3 +- > > tools/libs/ctrl/xc_pm.c | 25 +- > > tools/misc/xenpm.c | 94 ++-- > > xen/arch/x86/acpi/cpufreq/amd-cppc.c | 703 ++++++++++++++++++++++++++- > > xen/arch/x86/acpi/cpufreq/hwp.c | 32 +- > > 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/drivers/acpi/pm-op.c | 58 ++- > > xen/drivers/cpufreq/utility.c | 15 + > > xen/include/acpi/cpufreq/cpufreq.h | 44 ++ > > xen/include/public/sysctl.h | 5 +- > > 14 files changed, 936 insertions(+), 69 deletions(-) > > As we're considering our options towards getting this work in, can you clarify two > things please: > (1) In v9, the sole changes were related to the use of per-CPU data and the > adding of a ChangeLog entry? Yes, also in commit of "xen/cpufreq: Adapt SET/GET_CPUFREQ_CPPC". I added description of "moving the copying of the governor name" > (2) The driver is inactive by default, i.e. requires use of the command line > option to come into play? > Yes, only with specific command line to turn on the driver > If the answer to both is yes, we're leaning towards committing v8 plus the > ChangeLog entry. > > Jan
On 10.09.2025 11:27, Penny, Zheng wrote: >> -----Original Message----- >> From: Jan Beulich <jbeulich@suse.com> >> Sent: Wednesday, September 10, 2025 12:11 AM >> >> On 04.09.2025 08:35, Penny Zheng wrote: >>> Penny Zheng (8): >>> xen/cpufreq: embed hwp into struct cpufreq_policy{} >>> 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 >>> CHANGELOG.md: add amd-cppc/amd-cppc-epp cpufreq driver support >>> >>> CHANGELOG.md | 1 + >>> docs/misc/xen-command-line.pandoc | 9 +- >>> tools/include/xenctrl.h | 3 +- >>> tools/libs/ctrl/xc_pm.c | 25 +- >>> tools/misc/xenpm.c | 94 ++-- >>> xen/arch/x86/acpi/cpufreq/amd-cppc.c | 703 ++++++++++++++++++++++++++- >>> xen/arch/x86/acpi/cpufreq/hwp.c | 32 +- >>> 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/drivers/acpi/pm-op.c | 58 ++- >>> xen/drivers/cpufreq/utility.c | 15 + >>> xen/include/acpi/cpufreq/cpufreq.h | 44 ++ >>> xen/include/public/sysctl.h | 5 +- >>> 14 files changed, 936 insertions(+), 69 deletions(-) >> >> As we're considering our options towards getting this work in, can you clarify two >> things please: >> (1) In v9, the sole changes were related to the use of per-CPU data and the >> adding of a ChangeLog entry? > > Yes, also in commit of "xen/cpufreq: Adapt SET/GET_CPUFREQ_CPPC". I added description of "moving the copying of the governor name" Oh, right, and that description is either too little or possibly unnecessary, with a change made to "tools/cpufreq: extract CPPC para from cpufreq para" (both as per my v9 comments). IOW v8 also isn't exactly what would want to go in. All not a good basis for rushing this in at (later than) the last minute. Jan
© 2016 - 2025 Red Hat, Inc.