Message ID | 20220413090510.4039589-2-li.meng@amd.com |
---|---|
State | Superseded |
Headers | show |
Series | Add unit test module for AMD P-State driver | expand |
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 >
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 */
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> --- 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