[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [RFC PATCH 7/7] xl: allow for attaching and detaching a CPU to CMT



Now that the functionallity is wired, from within
Xen up to libxl, use that to implement a new mode
for `xl psr-cmt-attach' and `xl psr-cmt-detach',
by means of a new '-c' switch:

[root@redbrick ~]# xl psr-cmt-detach -c 4
[root@redbrick ~]# xl psr-cmt-attach -c 121

Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
---
 tools/libxl/xl_cmdimpl.c  |   44 ++++++++++++++++++++++++++++++++++----------
 tools/libxl/xl_cmdtable.c |   12 ++++++++----
 2 files changed, 42 insertions(+), 14 deletions(-)

diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index d314947..7f7d995 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -8233,30 +8233,54 @@ static int psr_cmt_show(libxl_psr_cmt_type type, 
uint32_t domid)
 
 int main_psr_cmt_attach(int argc, char **argv)
 {
-    uint32_t domid;
+    uint32_t id;
+    bool cpu = false;
     int opt, ret = 0;
+    static struct option opts[] = {
+        {"cpu", 0, 0, 'c'},
+        COMMON_LONG_OPTS,
+        {0, 0, 0, 0}
+    };
 
-    SWITCH_FOREACH_OPT(opt, "", NULL, "psr-cmt-attach", 1) {
-        /* No options */
+    SWITCH_FOREACH_OPT(opt, "c", opts, "psr-cmt-attach", 1) {
+        case 'c':
+            cpu = true;
+            break;
     }
 
-    domid = find_domain(argv[optind]);
-    ret = libxl_psr_cmt_attach(ctx, domid);
+    if (cpu) {
+        id = atoi(argv[optind]);
+        return libxl_psr_cmt_cpu_attach(ctx, id);
+    }
+    id = find_domain(argv[optind]);
+    ret = libxl_psr_cmt_attach(ctx, id);
 
     return ret;
 }
 
 int main_psr_cmt_detach(int argc, char **argv)
 {
-    uint32_t domid;
+    uint32_t id;
+    bool cpu = false;
     int opt, ret = 0;
+    static struct option opts[] = {
+        {"cpu", 0, 0, 'c'},
+        COMMON_LONG_OPTS,
+        {0, 0, 0, 0}
+    };
 
-    SWITCH_FOREACH_OPT(opt, "", NULL, "psr-cmt-detach", 1) {
-        /* No options */
+    SWITCH_FOREACH_OPT(opt, "c", opts, "psr-cmt-detach", 1) {
+        case 'c':
+            cpu = true;
+            break;
     }
 
-    domid = find_domain(argv[optind]);
-    ret = libxl_psr_cmt_detach(ctx, domid);
+    if (cpu) {
+        id = atoi(argv[optind]);
+        return libxl_psr_cmt_cpu_detach(ctx, id);
+    }
+    id = find_domain(argv[optind]);
+    ret = libxl_psr_cmt_detach(ctx, id);
 
     return ret;
 }
diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c
index 5bbe406..886dd8a 100644
--- a/tools/libxl/xl_cmdtable.c
+++ b/tools/libxl/xl_cmdtable.c
@@ -526,13 +526,17 @@ struct cmd_spec cmd_table[] = {
 #ifdef LIBXL_HAVE_PSR_CMT
     { "psr-cmt-attach",
       &main_psr_cmt_attach, 0, 1,
-      "Attach Cache Monitoring Technology service to a domain",
-      "<Domain>",
+      "Attach Cache Monitoring Technology service to a domain or a pCPU",
+      "[-c|--cpu] <id>",
+      "By default (no -c), <id> is the domain id of the domain to start 
monitoring.\n"
+      "-c|--cpu <id>           Attach monitoring to CPU <id>."
     },
     { "psr-cmt-detach",
       &main_psr_cmt_detach, 0, 1,
-      "Detach Cache Monitoring Technology service from a domain",
-      "<Domain>",
+      "Detach Cache Monitoring Technology service from a domain or a pCPU",
+      "[-c|--cpu] <id>",
+      "By default (no -c), <id> is the domain id of the domain to stop 
monitoring.\n"
+      "-c|--cpu <id>           Detach monitoring from CPU <id>."
     },
     { "psr-cmt-show",
       &main_psr_cmt_show, 0, 1,


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.