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: Shuah Khan <skhan@linuxfoundation.org> Signed-off-by: Huang Rui <ray.huang@amd.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
parent
d8363e2917
commit
8382dce5e4
|
@ -53,6 +53,9 @@ human\-readable output for the \-f, \-w, \-s and \-y parameters.
|
||||||
\fB\-n\fR \fB\-\-no-rounding\fR
|
\fB\-n\fR \fB\-\-no-rounding\fR
|
||||||
Output frequencies and latencies without rounding off values.
|
Output frequencies and latencies without rounding off values.
|
||||||
.TP
|
.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"
|
.SH "REMARKS"
|
||||||
.LP
|
.LP
|
||||||
By default only values of core zero are displayed. How to display settings of
|
By default only values of core zero are displayed. How to display settings of
|
||||||
|
|
|
@ -438,6 +438,17 @@ static int get_latency(unsigned int cpu, unsigned int human)
|
||||||
return 0;
|
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)
|
static void debug_output_one(unsigned int cpu)
|
||||||
{
|
{
|
||||||
struct cpufreq_available_frequencies *freqs;
|
struct cpufreq_available_frequencies *freqs;
|
||||||
|
@ -466,6 +477,7 @@ static void debug_output_one(unsigned int cpu)
|
||||||
if (get_freq_hardware(cpu, 1) < 0)
|
if (get_freq_hardware(cpu, 1) < 0)
|
||||||
get_freq_kernel(cpu, 1);
|
get_freq_kernel(cpu, 1);
|
||||||
get_boost_mode(cpu);
|
get_boost_mode(cpu);
|
||||||
|
get_perf_cap(cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct option info_opts[] = {
|
static struct option info_opts[] = {
|
||||||
|
@ -484,6 +496,7 @@ static struct option info_opts[] = {
|
||||||
{"proc", no_argument, NULL, 'o'},
|
{"proc", no_argument, NULL, 'o'},
|
||||||
{"human", no_argument, NULL, 'm'},
|
{"human", no_argument, NULL, 'm'},
|
||||||
{"no-rounding", no_argument, NULL, 'n'},
|
{"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;
|
int output_param = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
ret = getopt_long(argc, argv, "oefwldpgrasmybn", info_opts,
|
ret = getopt_long(argc, argv, "oefwldpgrasmybnc", info_opts,
|
||||||
NULL);
|
NULL);
|
||||||
switch (ret) {
|
switch (ret) {
|
||||||
case '?':
|
case '?':
|
||||||
|
@ -520,6 +533,7 @@ int cmd_freq_info(int argc, char **argv)
|
||||||
case 'e':
|
case 'e':
|
||||||
case 's':
|
case 's':
|
||||||
case 'y':
|
case 'y':
|
||||||
|
case 'c':
|
||||||
if (output_param) {
|
if (output_param) {
|
||||||
output_param = -1;
|
output_param = -1;
|
||||||
cont = 0;
|
cont = 0;
|
||||||
|
@ -626,6 +640,9 @@ int cmd_freq_info(int argc, char **argv)
|
||||||
case 'y':
|
case 'y':
|
||||||
ret = get_latency(cpu, human);
|
ret = get_latency(cpu, human);
|
||||||
break;
|
break;
|
||||||
|
case 'c':
|
||||||
|
ret = get_perf_cap(cpu);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue