|
[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 |