xenpm: Print message for disabled commands

xenpm get-cpufreq-states currently just prints no output when cpufreq is
disabled or HWP is running.  Have it print an appropriate message.  The
cpufreq disabled one mirrors the cpuidle disabled one.

cpufreq disabled:
$ xenpm get-cpufreq-states
Either Xen cpufreq is disabled or no valid information is registered!

Under HWP:
$ xenpm get-cpufreq-states
P-State information not supported.  Try 'get-cpufreq-average' or 'start'.

Also allow xenpm to handle EOPNOTSUPP from the pmstat hypercalls.
EOPNOTSUPP is returned when HWP is active in some cases and allows the
differentiation from cpufreq being disabled.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
Jason Andryuk authored and Jan Beulich committed 2024-02-01 16:19:36 +01:00
1 parent d3df0f180f
commit 18cd984905
1 file changed
+16 -3
+16 -3
View File
@@ -362,7 +362,15 @@ static int show_pxstat_by_cpuid(xc_interface *xc_handle, int cpuid)
ret = get_pxstat_by_cpuid(xc_handle, cpuid, &pxstatinfo);
if ( ret )
{
if ( ret == -ENODEV )
fprintf(stderr,
"Either Xen cpufreq is disabled or no valid information is registered!\n");
else if ( ret == -EOPNOTSUPP )
fprintf(stderr,
"P-State information not supported. Try 'get-cpufreq-average' or 'start'.\n");
return ret;
}
print_pxstat(cpuid, &pxstatinfo);
@@ -383,8 +391,12 @@ void pxstat_func(int argc, char *argv[])
/* show pxstates on all cpus */
int i;
for ( i = 0; i < max_cpu_nr; i++ )
if ( show_pxstat_by_cpuid(xc_handle, i) == -ENODEV )
{
int ret = show_pxstat_by_cpuid(xc_handle, i);
if ( ret == -ENODEV || ret == -EOPNOTSUPP )
break;
}
}
else
show_pxstat_by_cpuid(xc_handle, cpuid);
@@ -432,7 +444,7 @@ static uint64_t *sum, *sum_cx, *sum_px;
static void signal_int_handler(int signo)
{
int i, j, k;
int i, j, k, ret;
struct timeval tv;
int cx_cap = 0, px_cap = 0;
xc_cputopo_t *cputopo = NULL;
@@ -473,7 +485,8 @@ static void signal_int_handler(int signo)
}
}
if ( get_pxstat_by_cpuid(xc_handle, 0, NULL) != -ENODEV )
ret = get_pxstat_by_cpuid(xc_handle, 0, NULL);
if ( ret != -ENODEV && ret != -EOPNOTSUPP )
{
px_cap = 1;
for ( i = 0; i < max_cpu_nr; i++ )
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.