Re: [PATCH v11 0/8] AMD Pstate Fixes And Enhancements

From: Huang Rui
Date: Tue Apr 23 2024 - 06:40:27 EST


On Tue, Apr 23, 2024 at 03:58:16PM +0800, Yuan, Perry 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.
>

These series look good for me, thanks!

Only a minor comment in patch 1, I would prefer not to use short case in
the comment.

Acked-by: Huang Rui <ray.huang@xxxxxxx>

> Changes from v10:
> * pick ack-by flags from huang ray for all patches.
> * run testing on AMD Ryzen 5 7640U without regression issue.
>
> Changes from v9:
> * pick review by flag from Meng Li
> * pick test by flag from Ugwekar Dhananjay
> * picl review by flag from Gautham R. Shenoy
>
> 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@xxxxxxxxxxx/
> 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/
> v9: https://lore.kernel.org/lkml/cover.1710836407.git.perry.yuan@xxxxxxx/
> v10: https://lore.kernel.org/lkml/cover.1711335714.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(-)
>
> --
> 2.34.1
>