RE: [PATCH v9 0/8] AMD Pstate Fixes And Enhancements

From: Yuan, Perry
Date: Thu Mar 21 2024 - 23:33:57 EST


[AMD Official Use Only - General]

Regards.
Perry

> -----Original Message-----
> From: Ugwekar, Dhananjay <Dhananjay.Ugwekar@xxxxxxx>
> Sent: Wednesday, March 20, 2024 6:48 PM
> To: Yuan, Perry <Perry.Yuan@xxxxxxx>; rafael.j.wysocki@xxxxxxxxx;
> Limonciello, Mario <Mario.Limonciello@xxxxxxx>; viresh.kumar@xxxxxxxxxx;
> Shenoy, Gautham Ranjal <gautham.shenoy@xxxxxxx>; Petkov, Borislav
> <Borislav.Petkov@xxxxxxx>; Huang, Ray <Ray.Huang@xxxxxxx>
> Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Huang, Shimmer
> <Shimmer.Huang@xxxxxxx>; oleksandr@xxxxxxxxxxxxxx; Du, Xiaojian
> <Xiaojian.Du@xxxxxxx>; Meng, Li (Jassmine) <Li.Meng@xxxxxxx>; linux-
> pm@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH v9 0/8] AMD Pstate Fixes And Enhancements
>
> On 3/19/2024 1:58 PM, Perry Yuan wrote:
> > The patch series adds some fixes and enhancements to the AMD pstate
> > driver.
> >
> > It enables CPPC v2 for certain processors in the family 17H, as
> > requested by TR40 processor users who expect improved performance and
> > lower system temperature.
> >
> > changes latency and delay values to be read from platform firmware
> > firstly for more accurate timing.
> >
> > A new quirk is introduced for supporting amd-pstate on legacy
> > processors which either lack CPPC capability, or only only have CPPC
> > v2 capability
> >
> > Testing done with one APU system while cpb boost on:
> >
> > amd_pstate_lowest_nonlinear_freq:1701000
> > amd_pstate_max_freq:3501000
> > cpuinfo_max_freq:3501000
> > cpuinfo_min_freq:400000
> > scaling_cur_freq:3084836
> > scaling_max_freq:3501000
> > scaling_min_freq:400000
> >
> > analyzing CPU 6:
> > driver: amd-pstate-epp
> > CPUs which run at the same hardware frequency: 6
> > CPUs which need to have their frequency coordinated by software: 6
> > maximum transition latency: Cannot determine or is not supported.
> > hardware limits: 400 MHz - 3.50 GHz
> > available cpufreq governors: performance powersave
> > current policy: frequency should be within 400 MHz and 3.50 GHz.
> > The governor "powersave" may decide which speed to use
> > within this range.
> > current CPU frequency: Unable to call hardware
> > current CPU frequency: 3.50 GHz (asserted by call to kernel)
> > boost state support:
> > Supported: yes
> > Active: yes
> > AMD PSTATE Highest Performance: 255. Maximum Frequency: 3.50 GHz.
> > AMD PSTATE Nominal Performance: 204. Nominal Frequency: 2.80 GHz.
> > AMD PSTATE Lowest Non-linear Performance: 124. Lowest Non-linear
> Frequency: 1.70 GHz.
> > AMD PSTATE Lowest Performance: 30. Lowest Frequency: 400 MHz.
> >
> >
> > I would greatly appreciate any feedbacks.
> > Thank you!
> > Perry.
> >
>
> I have tested the patch on AMD Zen4 Genoa machine with boost off,
>
> With Patchset:
>
> /sys/devices/system/cpu/cpu89/cpufreq# grep . *freq
> amd_pstate_lowest_nonlinear_freq:1804000
> amd_pstate_max_freq:3514000
> cpuinfo_max_freq:2151000
> cpuinfo_min_freq:400000
> scaling_cur_freq:1805231
> scaling_max_freq:2151000
> scaling_min_freq:400000
>
> /sys/devices/system/cpu/cpu89/cpufreq# cat cpuinfo_transition_latency
> 20000
>
> Without Patchset:
>
> /sys/devices/system/cpu/cpu104/cpufreq# grep . *freq
> amd_pstate_lowest_nonlinear_freq:1804403
> amd_pstate_max_freq:3514280
> cpuinfo_max_freq:2151000
> cpuinfo_min_freq:400000
> scaling_cur_freq:1805375
> scaling_max_freq:2151000
> scaling_min_freq:400000
>
> /sys/devices/system/cpu/cpu104/cpufreq# cat cpuinfo_transition_latency
> 20000
>
> The amd_pstate_max_freq seems to be incorrect with and without the
> patchset when the boost is disabled, which is supposed to be fixed in the cpb
> patchset.
> Rest looks good to me.
>
> Tested-by: Dhananjay Ugwekar <Dhananjay.Ugwekar@xxxxxxx>
>
> Thanks,
> Dhananjay

Thank you Dhananjay!
Will pick up your test by flag in next version.

Perry.

>
> > Changes from v8:
> > * add commit log for patch 1 and patch 2 (Rafael)
> > * add missing Perry signed-off-by for new patches #1,#2,#4 (Rafael)
> > * rebased to latest linux-pm/bleeding-edge
> >
> > Changes from v7:
> > * Gautham helped to invole some new improved patches into the patchset.
> > * Adds comments for cpudata->{min,max}_limit_{perf,freq}, variables [New
> Patch].
> > * Clarifies that the units for cpudata->*_freq is in khz via comments [New
> Patch].
> > * Implements the unified computation of all cpudata->*_freq
> > * v7 Patch 2/6 was dropped which is not needed any more
> > * moved the quirk check to the amd_pstate_get_freq() function
> > * pick up RB flags from Gautham
> > * After the cleanup in patch 3, we don't need the helpers
> > amd_get_{min,max,nominal,lowest_nonlinear}_freq(). This
> > patch removes it [New Patch].
> > * testing done on APU system as well, no regression found.
> >
> > Changes from v6:
> > * add one new patch to initialize capabilities in
> > amd_pstate_init_perf which can avoid duplicate cppc capabilities read
> > the change has been tested on APU system.
> > * pick up RB flags from Gautham
> > * drop the patch 1/6 which has been merged by Rafael
> >
> > Changes from v5:
> > * rebased to linux-pm v6.8
> > * pick up RB flag from for patch 6(Mario)
> >
> > Changes from v4:
> > * improve the dmi matching rule with zen2 flag only
> >
> > Changes from v3:
> > * change quirk matching broken BIOS with family/model ID and Zen2
> > flag to fix the CPPC definition issue
> > * fix typo in quirk
> >
> > Changes from v2:
> > * change quirk matching to BIOS version and release (Mario)
> > * pick up RB flag from Mario
> >
> > Changes from v1:
> > * pick up the RB flags from Mario
> > * address review comment of patch #6 for amd_get_nominal_freq()
> > * rebased the series to linux-pm/bleeding-edge v6.8.0-rc2
> > * update debug log for patch #5 as Mario suggested.
> > * fix some typos and format problems
> > * tested on 7950X platform
> >
> >
> > V1:
> > https://lore.kernel.org/lkml/63c2b3d7-083a-4daa-ba40-
> 629b3223a92d@mail
> > box.org/
> > V2:
> > https://lore.kernel.org/all/cover.1706863981.git.perry.yuan@xxxxxxx/
> > v3:
> > https://lore.kernel.org/lkml/cover.1707016927.git.perry.yuan@xxxxxxx/
> > v4:
> > https://lore.kernel.org/lkml/cover.1707193566.git.perry.yuan@xxxxxxx/
> > v5:
> > https://lore.kernel.org/lkml/cover.1707273526.git.perry.yuan@xxxxxxx/
> > v6:
> > https://lore.kernel.org/lkml/cover.1707363758.git.perry.yuan@xxxxxxx/
> > v7:
> > https://lore.kernel.org/lkml/cover.1710323410.git.perry.yuan@xxxxxxx/
> > v8:
> > https://lore.kernel.org/lkml/cover.1710754409.git.perry.yuan@xxxxxxx/
> >
> > Gautham R. Shenoy (3):
> > cpufreq: amd-pstate: Document *_limit_* fields in struct amd_cpudata
> > cpufreq: amd-pstate: Document the units for freq variables in
> > amd_cpudata
> > cpufreq: amd-pstate: Remove
> > amd_get_{min,max,nominal,lowest_nonlinear}_freq()
> >
> > Perry Yuan (5):
> > cpufreq: amd-pstate: Unify computation of
> > {max,min,nominal,lowest_nonlinear}_freq
> > cpufreq: amd-pstate: Bail out if min/max/nominal_freq is 0
> > cpufreq: amd-pstate: get transition delay and latency value from ACPI
> > tables
> > cppc_acpi: print error message if CPPC is unsupported
> > cpufreq: amd-pstate: Add quirk for the pstate CPPC capabilities
> > missing
> >
> > drivers/acpi/cppc_acpi.c | 4 +-
> > drivers/cpufreq/amd-pstate.c | 257 +++++++++++++++++++++--------------
> > include/linux/amd-pstate.h | 20 ++-
> > 3 files changed, 174 insertions(+), 107 deletions(-)
> >