Message ID | 20231228075705.26652-2-TonyWWang-oc@zhaoxin.com |
---|---|
State | New |
Headers | show |
Series | [1/3] ACPI: CPPC: Add get the highest perf register value support | expand |
On Thu, Dec 28, 2023 at 03:57:03PM +0800, Tony W Wang-oc wrote: > Add function cppc_get_highest_perf in generic CPPC driver to get the > highest perf register value for specified core. > > Signed-off-by: Tony W Wang-oc <TonyWWang-oc@zhaoxin.com> > --- > drivers/acpi/cppc_acpi.c | 13 +++++++++++++ > include/acpi/cppc_acpi.h | 5 +++++ > 2 files changed, 18 insertions(+) > > diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c > index 7ff269a78c20..1a77c514d007 100644 > --- a/drivers/acpi/cppc_acpi.c > +++ b/drivers/acpi/cppc_acpi.c > @@ -1154,6 +1154,19 @@ int cppc_get_nominal_perf(int cpunum, u64 *nominal_perf) > return cppc_get_perf(cpunum, NOMINAL_PERF, nominal_perf); > } > > +/** > + * cppc_get_highest_perf - Get the highest performance register value. > + * @cpunum: CPU from which to get highest performance. > + * @highest_perf: Return address. > + * > + * Return: 0 for success, -EIO otherwise. > + */ > +int cppc_get_highest_perf(int cpunum, u64 *highest_perf) > +{ > + return cppc_get_perf(cpunum, HIGHEST_PERF, highest_perf); > +} > +EXPORT_SYMBOL_GPL(cppc_get_highest_perf); The Intel P-State driver uses cppc_get_perf_caps(). You would not need to export this function. Having said that, the Intel P-State driver could also use this new function, IMO. AFAICS, it does not *have* to use cppc_get_perf_caps().
On 2024/1/18 06:07, Ricardo Neri wrote: > > [这封邮件来自外部发件人] > > On Thu, Dec 28, 2023 at 03:57:03PM +0800, Tony W Wang-oc wrote: >> Add function cppc_get_highest_perf in generic CPPC driver to get the >> highest perf register value for specified core. >> >> Signed-off-by: Tony W Wang-oc <TonyWWang-oc@zhaoxin.com> >> --- >> drivers/acpi/cppc_acpi.c | 13 +++++++++++++ >> include/acpi/cppc_acpi.h | 5 +++++ >> 2 files changed, 18 insertions(+) >> >> diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c >> index 7ff269a78c20..1a77c514d007 100644 >> --- a/drivers/acpi/cppc_acpi.c >> +++ b/drivers/acpi/cppc_acpi.c >> @@ -1154,6 +1154,19 @@ int cppc_get_nominal_perf(int cpunum, u64 *nominal_perf) >> return cppc_get_perf(cpunum, NOMINAL_PERF, nominal_perf); >> } >> >> +/** >> + * cppc_get_highest_perf - Get the highest performance register value. >> + * @cpunum: CPU from which to get highest performance. >> + * @highest_perf: Return address. >> + * >> + * Return: 0 for success, -EIO otherwise. >> + */ >> +int cppc_get_highest_perf(int cpunum, u64 *highest_perf) >> +{ >> + return cppc_get_perf(cpunum, HIGHEST_PERF, highest_perf); >> +} >> +EXPORT_SYMBOL_GPL(cppc_get_highest_perf); > The Intel P-State driver uses cppc_get_perf_caps(). You would not need to > export this function. > > Having said that, the Intel P-State driver could also use this new > function, IMO. AFAICS, it does not *have* to use cppc_get_perf_caps(). Yes, you are right.
diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c index 7ff269a78c20..1a77c514d007 100644 --- a/drivers/acpi/cppc_acpi.c +++ b/drivers/acpi/cppc_acpi.c @@ -1154,6 +1154,19 @@ int cppc_get_nominal_perf(int cpunum, u64 *nominal_perf) return cppc_get_perf(cpunum, NOMINAL_PERF, nominal_perf); } +/** + * cppc_get_highest_perf - Get the highest performance register value. + * @cpunum: CPU from which to get highest performance. + * @highest_perf: Return address. + * + * Return: 0 for success, -EIO otherwise. + */ +int cppc_get_highest_perf(int cpunum, u64 *highest_perf) +{ + return cppc_get_perf(cpunum, HIGHEST_PERF, highest_perf); +} +EXPORT_SYMBOL_GPL(cppc_get_highest_perf); + /** * cppc_get_epp_perf - Get the epp register value. * @cpunum: CPU from which to get epp preference value. diff --git a/include/acpi/cppc_acpi.h b/include/acpi/cppc_acpi.h index 6126c977ece0..c0b69ffe7bdb 100644 --- a/include/acpi/cppc_acpi.h +++ b/include/acpi/cppc_acpi.h @@ -139,6 +139,7 @@ struct cppc_cpudata { #ifdef CONFIG_ACPI_CPPC_LIB extern int cppc_get_desired_perf(int cpunum, u64 *desired_perf); extern int cppc_get_nominal_perf(int cpunum, u64 *nominal_perf); +extern int cppc_get_highest_perf(int cpunum, u64 *highest_perf); extern int cppc_get_perf_ctrs(int cpu, struct cppc_perf_fb_ctrs *perf_fb_ctrs); extern int cppc_set_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls); extern int cppc_set_enable(int cpu, bool enable); @@ -165,6 +166,10 @@ static inline int cppc_get_nominal_perf(int cpunum, u64 *nominal_perf) { return -ENOTSUPP; } +static inline int cppc_get_highest_perf(int cpunum, u64 *highest_perf) +{ + return -ENOTSUPP; +} static inline int cppc_get_perf_ctrs(int cpu, struct cppc_perf_fb_ctrs *perf_fb_ctrs) { return -ENOTSUPP;
Add function cppc_get_highest_perf in generic CPPC driver to get the highest perf register value for specified core. Signed-off-by: Tony W Wang-oc <TonyWWang-oc@zhaoxin.com> --- drivers/acpi/cppc_acpi.c | 13 +++++++++++++ include/acpi/cppc_acpi.h | 5 +++++ 2 files changed, 18 insertions(+)