Skip to content

Commit

Permalink
cpupower: Add "perf" option to print AMD P-State information
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
huangrui authored and xanmod committed Feb 23, 2022
1 parent 9cee634 commit f639634
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
3 changes: 3 additions & 0 deletions tools/power/cpupower/man/cpupower-frequency-info.1
Expand Up @@ -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
Expand Down
19 changes: 18 additions & 1 deletion tools/power/cpupower/utils/cpufreq-info.c
Expand Up @@ -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;
Expand Down Expand Up @@ -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[] = {
Expand All @@ -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'},
{ },
};

Expand All @@ -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 '?':
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit f639634

Please sign in to comment.