diff mbox series

[v7,10/10] cpupower: Add "perf" option to print AMD P-State information

Message ID 20220222153426.2216974-11-ray.huang@amd.com
State Accepted
Commit 8382dce5e4835c045f33b8958a5f559d212cdd11
Headers show
Series cpupower: Add AMD P-State Support | expand

Commit Message

Huang Rui Feb. 22, 2022, 3:34 p.m. UTC
Add "-r --perf" option in cpupower-frequency-info to get the performance
and frequency values for AMD P-State.

Signed-off-by: Huang Rui <ray.huang@amd.com>
---
 .../cpupower/man/cpupower-frequency-info.1    |  3 +++
 tools/power/cpupower/utils/cpufreq-info.c     | 19 ++++++++++++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

Comments

Huang Rui Feb. 23, 2022, 3:37 a.m. UTC | #1
On Tue, Feb 22, 2022 at 11:34:26PM +0800, Huang, Ray wrote:
> Add "-r --perf" option in cpupower-frequency-info to get the performance

Thanks Shuah! There is one typo ("-r --perf" --> "-c --perf") here. Because
"r" is occupied by option character. Would you mind to correct it in the
commit log?

Best Regards,
Ray
Shuah Khan Feb. 24, 2022, 12:55 a.m. UTC | #2
On 2/22/22 8:37 PM, Huang Rui wrote:
> On Tue, Feb 22, 2022 at 11:34:26PM +0800, Huang, Ray wrote:
>> Add "-r --perf" option in cpupower-frequency-info to get the performance
> 
> Thanks Shuah! There is one typo ("-r --perf" --> "-c --perf") here. Because
> "r" is occupied by option character. Would you mind to correct it in the
> commit log?
> 

Done. Commit amended in
https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux.git
cpupower branch for Linux 5.18-rc1

thanks,
-- Shuah
diff mbox series

Patch

diff --git a/tools/power/cpupower/man/cpupower-frequency-info.1 b/tools/power/cpupower/man/cpupower-frequency-info.1
index 6aa8d239dff9..dd545b499480 100644
--- a/tools/power/cpupower/man/cpupower-frequency-info.1
+++ b/tools/power/cpupower/man/cpupower-frequency-info.1
@@ -53,6 +53,9 @@  human\-readable output for the \-f, \-w, \-s and \-y parameters.
 \fB\-n\fR \fB\-\-no-rounding\fR
 Output frequencies and latencies without rounding off values.
 .TP  
+\fB\-c\fR \fB\-\-perf\fR
+Get performances and frequencies capabilities of CPPC, by reading it from hardware (only available on the hardware with CPPC).
+.TP
 .SH "REMARKS"
 .LP 
 By default only values of core zero are displayed. How to display settings of
diff --git a/tools/power/cpupower/utils/cpufreq-info.c b/tools/power/cpupower/utils/cpufreq-info.c
index 235243ec5ce0..0646f615fe2d 100644
--- a/tools/power/cpupower/utils/cpufreq-info.c
+++ b/tools/power/cpupower/utils/cpufreq-info.c
@@ -438,6 +438,17 @@  static int get_latency(unsigned int cpu, unsigned int human)
 	return 0;
 }
 
+/* --performance / -c */
+
+static int get_perf_cap(unsigned int cpu)
+{
+	if (cpupower_cpu_info.vendor == X86_VENDOR_AMD &&
+	    cpupower_cpu_info.caps & CPUPOWER_CAP_AMD_PSTATE)
+		amd_pstate_show_perf_and_freq(cpu, no_rounding);
+
+	return 0;
+}
+
 static void debug_output_one(unsigned int cpu)
 {
 	struct cpufreq_available_frequencies *freqs;
@@ -466,6 +477,7 @@  static void debug_output_one(unsigned int cpu)
 	if (get_freq_hardware(cpu, 1) < 0)
 		get_freq_kernel(cpu, 1);
 	get_boost_mode(cpu);
+	get_perf_cap(cpu);
 }
 
 static struct option info_opts[] = {
@@ -484,6 +496,7 @@  static struct option info_opts[] = {
 	{"proc",	 no_argument,		 NULL,	 'o'},
 	{"human",	 no_argument,		 NULL,	 'm'},
 	{"no-rounding", no_argument,	 NULL,	 'n'},
+	{"performance", no_argument,	 NULL,	 'c'},
 	{ },
 };
 
@@ -497,7 +510,7 @@  int cmd_freq_info(int argc, char **argv)
 	int output_param = 0;
 
 	do {
-		ret = getopt_long(argc, argv, "oefwldpgrasmybn", info_opts,
+		ret = getopt_long(argc, argv, "oefwldpgrasmybnc", info_opts,
 				  NULL);
 		switch (ret) {
 		case '?':
@@ -520,6 +533,7 @@  int cmd_freq_info(int argc, char **argv)
 		case 'e':
 		case 's':
 		case 'y':
+		case 'c':
 			if (output_param) {
 				output_param = -1;
 				cont = 0;
@@ -626,6 +640,9 @@  int cmd_freq_info(int argc, char **argv)
 		case 'y':
 			ret = get_latency(cpu, human);
 			break;
+		case 'c':
+			ret = get_perf_cap(cpu);
+			break;
 		}
 		if (ret)
 			return ret;