[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 3/3] xenpm: Allow controlling the max C-state sub-state
Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx> CC: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> CC: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> CC: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/misc/xenpm.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c index e43924c..9b52b00 100644 --- a/tools/misc/xenpm.c +++ b/tools/misc/xenpm.c @@ -64,6 +64,7 @@ void show_help(void) " set-vcpu-migration-delay <num> set scheduler vcpu migration delay in us\n" " get-vcpu-migration-delay get scheduler vcpu migration delay\n" " set-max-cstate <num> set the C-State limitation (<num> >= 0)\n" + " set-max-csubstate <num> set the C-State sub-state limitation (<num> >= 0)\n" " start [seconds] start collect Cx/Px statistics,\n" " output after CTRL-C or SIGINT or several seconds.\n" " enable-turbo-mode [cpuid] enable Turbo Mode for processors that support it.\n" @@ -188,7 +189,19 @@ static int show_max_cstate(xc_interface *xc_handle) if ( (ret = xc_get_cpuidle_max_cstate(xc_handle, &value)) ) return ret; - printf("Max possible C-state: C%d\n\n", value); + printf("Max possible C-state: C%d\n", value); + return 0; +} + +static int show_max_csubstate(xc_interface *xc_handle) +{ + int ret = 0; + uint32_t value; + + if ( (ret = xc_get_cpuidle_max_csubstate(xc_handle, &value)) ) + return ret; + + printf("Max possible C-state sub-state: %u\n\n", value); return 0; } @@ -223,6 +236,7 @@ void cxstat_func(int argc, char *argv[]) parse_cpuid(argv[0], &cpuid); show_max_cstate(xc_handle); + show_max_csubstate(xc_handle); if ( cpuid < 0 ) { @@ -1088,6 +1102,23 @@ void set_max_cstate_func(int argc, char *argv[]) value, errno, strerror(errno)); } +void set_max_csubstate_func(int argc, char *argv[]) +{ + uint32_t value; + + if ( argc != 1 || sscanf(argv[0], "%u", &value) != 1 ) + { + fprintf(stderr, "Missing or invalid argument(s)\n"); + exit(EINVAL); + } + + if ( !xc_set_cpuidle_max_csubstate(xc_handle, value) ) + printf("set max_csubstate to %u succeeded\n", value); + else + fprintf(stderr, "set max_csubstate to %u failed (%d - %s)\n", + value, errno, strerror(errno)); +} + void enable_turbo_mode(int argc, char *argv[]) { int cpuid = -1; @@ -1154,6 +1185,7 @@ struct { { "get-vcpu-migration-delay", get_vcpu_migration_delay_func}, { "set-vcpu-migration-delay", set_vcpu_migration_delay_func}, { "set-max-cstate", set_max_cstate_func}, + { "set-max-csubstate", set_max_csubstate_func}, { "enable-turbo-mode", enable_turbo_mode }, { "disable-turbo-mode", disable_turbo_mode }, }; -- 1.9.3 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |