Messages in this thread | | | Date | Sun, 17 Apr 2022 10:09:47 +0800 | From | Huang Rui <> | Subject | Re: [PATCH 1/3] cpufreq: amd-pstate: Expose struct amd_cpudata |
| |
On Wed, Apr 13, 2022 at 05:05:08PM +0800, Meng Li wrote: > Expose struct amd_cpudata to AMD P-State unit test module. > > This data struct will be used on the following AMD P-State unit test > (amd-pstate-ut) module. The amd-pstate-ut module can get some AMD > infomations by this data struct. For example: highest perf, > nominal perf, boost supported etc. > > Signed-off-by: Meng Li <li.meng@amd.com>
Acked-by: Huang Rui <ray.huang@amd.com>
> --- > MAINTAINERS | 1 + > drivers/cpufreq/amd-pstate.c | 60 +---------------------------- > include/linux/amd-pstate.h | 74 ++++++++++++++++++++++++++++++++++++ > 3 files changed, 76 insertions(+), 59 deletions(-) > create mode 100644 include/linux/amd-pstate.h > > diff --git a/MAINTAINERS b/MAINTAINERS > index 9832b607e2e2..f108e83ba851 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1003,6 +1003,7 @@ S: Supported > F: Documentation/admin-guide/pm/amd-pstate.rst > F: drivers/cpufreq/amd-pstate* > F: tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py > +F: include/linux/amd-pstate.h > > AMD PTDMA DRIVER > M: Sanjay R Mehta <sanju.mehta@amd.com> > diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c > index 7be38bc6a673..5f7a00a64f76 100644 > --- a/drivers/cpufreq/amd-pstate.c > +++ b/drivers/cpufreq/amd-pstate.c > @@ -36,6 +36,7 @@ > #include <linux/delay.h> > #include <linux/uaccess.h> > #include <linux/static_call.h> > +#include <linux/amd-pstate.h> > > #include <acpi/processor.h> > #include <acpi/cppc_acpi.h> > @@ -65,65 +66,6 @@ MODULE_PARM_DESC(shared_mem, > > static struct cpufreq_driver amd_pstate_driver; > > -/** > - * struct amd_aperf_mperf > - * @aperf: actual performance frequency clock count > - * @mperf: maximum performance frequency clock count > - * @tsc: time stamp counter > - */ > -struct amd_aperf_mperf { > - u64 aperf; > - u64 mperf; > - u64 tsc; > -}; > - > -/** > - * struct amd_cpudata - private CPU data for AMD P-State > - * @cpu: CPU number > - * @req: constraint request to apply > - * @cppc_req_cached: cached performance request hints > - * @highest_perf: the maximum performance an individual processor may reach, > - * assuming ideal conditions > - * @nominal_perf: the maximum sustained performance level of the processor, > - * assuming ideal operating conditions > - * @lowest_nonlinear_perf: the lowest performance level at which nonlinear power > - * savings are achieved > - * @lowest_perf: the absolute lowest performance level of the processor > - * @max_freq: the frequency that mapped to highest_perf > - * @min_freq: the frequency that mapped to lowest_perf > - * @nominal_freq: the frequency that mapped to nominal_perf > - * @lowest_nonlinear_freq: the frequency that mapped to lowest_nonlinear_perf > - * @cur: Difference of Aperf/Mperf/tsc count between last and current sample > - * @prev: Last Aperf/Mperf/tsc count value read from register > - * @freq: current cpu frequency value > - * @boost_supported: check whether the Processor or SBIOS supports boost mode > - * > - * The amd_cpudata is key private data for each CPU thread in AMD P-State, and > - * represents all the attributes and goals that AMD P-State requests at runtime. > - */ > -struct amd_cpudata { > - int cpu; > - > - struct freq_qos_request req[2]; > - u64 cppc_req_cached; > - > - u32 highest_perf; > - u32 nominal_perf; > - u32 lowest_nonlinear_perf; > - u32 lowest_perf; > - > - u32 max_freq; > - u32 min_freq; > - u32 nominal_freq; > - u32 lowest_nonlinear_freq; > - > - struct amd_aperf_mperf cur; > - struct amd_aperf_mperf prev; > - > - u64 freq; > - bool boost_supported; > -}; > - > static inline int pstate_enable(bool enable) > { > return wrmsrl_safe(MSR_AMD_CPPC_ENABLE, enable); > diff --git a/include/linux/amd-pstate.h b/include/linux/amd-pstate.h > new file mode 100644 > index 000000000000..790b04c9000b > --- /dev/null > +++ b/include/linux/amd-pstate.h > @@ -0,0 +1,74 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > +/* > + * linux/include/linux/amd-pstate.h > + * > + * Copyright (C) 2007-2010 Advanced Micro Devices, Inc. > + * Author: Meng Li <li.meng@amd.com> > + */ > +#ifndef _LINUX_AMD_PSTATE_H > +#define _LINUX_AMD_PSTATE_H > + > +#include <linux/pm_qos.h> > +/********************************************************************* > + * AMD P-state INTERFACE * > + *********************************************************************/ > +/** > + * struct amd_aperf_mperf > + * @aperf: actual performance frequency clock count > + * @mperf: maximum performance frequency clock count > + * @tsc: time stamp counter > + */ > +struct amd_aperf_mperf { > + u64 aperf; > + u64 mperf; > + u64 tsc; > +}; > + > +/** > + * struct amd_cpudata - private CPU data for AMD P-State > + * @cpu: CPU number > + * @req: constraint request to apply > + * @cppc_req_cached: cached performance request hints > + * @highest_perf: the maximum performance an individual processor may reach, > + * assuming ideal conditions > + * @nominal_perf: the maximum sustained performance level of the processor, > + * assuming ideal operating conditions > + * @lowest_nonlinear_perf: the lowest performance level at which nonlinear power > + * savings are achieved > + * @lowest_perf: the absolute lowest performance level of the processor > + * @max_freq: the frequency that mapped to highest_perf > + * @min_freq: the frequency that mapped to lowest_perf > + * @nominal_freq: the frequency that mapped to nominal_perf > + * @lowest_nonlinear_freq: the frequency that mapped to lowest_nonlinear_perf > + * @cur: Difference of Aperf/Mperf/tsc count between last and current sample > + * @prev: Last Aperf/Mperf/tsc count value read from register > + * @freq: current cpu frequency value > + * @boost_supported: check whether the Processor or SBIOS supports boost mode > + * > + * The amd_cpudata is key private data for each CPU thread in AMD P-State, and > + * represents all the attributes and goals that AMD P-State requests at runtime. > + */ > +struct amd_cpudata { > + int cpu; > + > + struct freq_qos_request req[2]; > + u64 cppc_req_cached; > + > + u32 highest_perf; > + u32 nominal_perf; > + u32 lowest_nonlinear_perf; > + u32 lowest_perf; > + > + u32 max_freq; > + u32 min_freq; > + u32 nominal_freq; > + u32 lowest_nonlinear_freq; > + > + struct amd_aperf_mperf cur; > + struct amd_aperf_mperf prev; > + > + u64 freq; > + bool boost_supported; > +}; > + > +#endif /* _LINUX_AMD_PSTATE_H */ > -- > 2.25.1 >
| |