Commit 8382dce5 authored by Huang Rui's avatar Huang Rui Committed by Shuah Khan
Browse files

cpupower: Add "perf" option to print AMD P-State information



Add "-c --perf" option in cpupower-frequency-info to get the performance
and frequency values for AMD P-State.

Commit message amended:
Shuah Khan <skhan@linuxfoundation.org>

Reviewed-by: default avatarShuah Khan <skhan@linuxfoundation.org>
Signed-off-by: default avatarHuang Rui <ray.huang@amd.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent d8363e29
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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
+18 −1
Original line number Diff line number Diff line
@@ -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;