Messages in this thread | | | Date | Sun, 20 Feb 2022 22:35:52 +0800 | From | Huang Rui <> | Subject | Re: [PATCH RESEND v6 7/9] cpupower: Enable boost state support for AMD P-State module |
| |
On Sat, Feb 19, 2022 at 08:01:59AM +0800, Shuah Khan wrote: > On 2/16/22 12:35 AM, Huang Rui wrote: > > The legacy ACPI hardware P-States function has 3 P-States on ACPI table, > > the CPU frequency only can be switched between the 3 P-States. While the > > processor supports the boost state, it will have another boost state > > that the frequency can be higher than P0 state, and the state can be > > decoded by the function of decode_pstates() and read by > > amd_pci_get_num_boost_states(). > > > > However, the new AMD P-State function is different than legacy ACPI > > hardware P-State on AMD processors. That has a finer grain frequency > > range between the highest and lowest frequency. And boost frequency is > > actually the frequency which is mapped on highest performance ratio. The > > similiar previous P0 frequency is mapped on nominal performance ratio. > > Nit - similar
Corrected.
> > > If the highest performance on the processor is higher than nominal > > performance, then we think the current processor supports the boost > > state. And it uses amd_pstate_boost_init() to initialize boost for AMD > > P-State function. > > > > Signed-off-by: Huang Rui <ray.huang@amd.com> > > --- > > tools/power/cpupower/utils/helpers/amd.c | 18 ++++++++++++++++++ > > tools/power/cpupower/utils/helpers/helpers.h | 5 +++++ > > tools/power/cpupower/utils/helpers/misc.c | 2 ++ > > 3 files changed, 25 insertions(+) > > > > diff --git a/tools/power/cpupower/utils/helpers/amd.c b/tools/power/cpupower/utils/helpers/amd.c > > index 4d45d1b44164..f5ba528dc7db 100644 > > --- a/tools/power/cpupower/utils/helpers/amd.c > > +++ b/tools/power/cpupower/utils/helpers/amd.c > > @@ -175,5 +175,23 @@ static unsigned long amd_pstate_get_data(unsigned int cpu, > > MAX_AMD_PSTATE_VALUE_READ_FILES); > > } > > > > +void amd_pstate_boost_init(unsigned int cpu, int *support, int *active) > > +{ > > + unsigned long highest_perf, nominal_perf, cpuinfo_min, > > + cpuinfo_max, amd_pstate_max; > > + > > + highest_perf = amd_pstate_get_data(cpu, AMD_PSTATE_HIGHEST_PERF); > > + nominal_perf = acpi_cppc_get_data(cpu, NOMINAL_PERF); > > + > > + *support = highest_perf > nominal_perf ? 1 : 0; > > + if (!(*support)) > > + return; > > + > > + cpufreq_get_hardware_limits(cpu, &cpuinfo_min, &cpuinfo_max); > > + amd_pstate_max = amd_pstate_get_data(cpu, AMD_PSTATE_MAX_FREQ); > > + > > + *active = cpuinfo_max == amd_pstate_max ? 1 : 0; > > +} > > + > > /* AMD P-State Helper Functions ************************************/ > > #endif /* defined(__i386__) || defined(__x86_64__) */ > > diff --git a/tools/power/cpupower/utils/helpers/helpers.h b/tools/power/cpupower/utils/helpers/helpers.h > > index 557524078e94..f142fbfa4a77 100644 > > --- a/tools/power/cpupower/utils/helpers/helpers.h > > +++ b/tools/power/cpupower/utils/helpers/helpers.h > > @@ -140,6 +140,8 @@ extern int cpufreq_has_boost_support(unsigned int cpu, int *support, > > > > /* AMD P-State stuff **************************/ > > extern bool cpupower_amd_pstate_enabled(void); > > +extern void amd_pstate_boost_init(unsigned int cpu, > > + int *support, int *active); > > > > /* AMD P-State stuff **************************/ > > > > @@ -177,6 +179,9 @@ static inline int cpufreq_has_boost_support(unsigned int cpu, int *support, > > > > static inline bool cpupower_amd_pstate_enabled(void) > > { return false; } > > +static void amd_pstate_boost_init(unsigned int cpu, > > + int *support, int *active) > > +{ return; } > > No need for a return here >
Will remove "return".
Thanks, Ray
| |