Message ID | 1484704967-5609-24-git-send-email-yi.y.sun@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, 2017-01-18 at 10:02 +0800, Yi Sun wrote: > --- a/tools/libxl/xl_cmdimpl.c > +++ b/tools/libxl/xl_cmdimpl.c > @@ -9523,19 +9523,21 @@ int main_psr_cat_cbm_set(int argc, char > **argv) > char *value; > libxl_string_list socket_list; > unsigned long start, end; > - int i, j, len; > + unsigned int i, j, len; > This type change has nothing to do with this very patch, has it? > + unsigned int lvl = 3; > Yeah, well, I understand that it's an improvement, and that, while you're making changes in the area, you may want to do it... but at the same time it is undeniably confusing to see the change here. Personally, I don't like it to be part of this patch, but this is not my call. :-) > @@ -9555,17 +9557,24 @@ int main_psr_cat_cbm_set(int argc, char > **argv) > case 'c': > opt_code = 1; > break; > + case 'l': > + lvl = atoi(optarg); > + break; > } > > - if (opt_data && opt_code) { > - fprintf(stderr, "Cannot handle -c and -d at the same > time\n"); > - return -1; > - } else if (opt_data) { > - type = LIBXL_PSR_CBM_TYPE_L3_CBM_DATA; > - } else if (opt_code) { > - type = LIBXL_PSR_CBM_TYPE_L3_CBM_CODE; > - } else { > - type = LIBXL_PSR_CBM_TYPE_L3_CBM; > + if (lvl == 2) > + type = LIBXL_PSR_CBM_TYPE_L2_CBM; > + else if (lvl == 3) { > + if (opt_data && opt_code) { > + fprintf(stderr, "Cannot handle -c and -d at the same > time\n"); > + return ERROR_FAIL; > When the xl program is terminating --and in this case it is, as we are returning from a main_foo_bar() function-- the exit code should be either EXIT_SUCCESS (if everything went ok) or EXIT_FAILURE (if something went wrong, like in this case). I know this not yet happens everywhere in xl, but, please, let's cope with that for new code. Apart of these two things I've mentioned, the patch looks ok to me. Regards, Dario > + } else if (opt_data) { > + type = LIBXL_PSR_CBM_TYPE_L3_CBM_DATA; > + } else if (opt_code) { > + type = LIBXL_PSR_CBM_TYPE_L3_CBM_CODE; > + } else { > + type = LIBXL_PSR_CBM_TYPE_L3_CBM; > + } > } > > if (libxl_bitmap_is_empty(&target_map)) > diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c > index c5fbad4..32c3ee5 100644 > --- a/tools/libxl/xl_cmdtable.c > +++ b/tools/libxl/xl_cmdtable.c > @@ -550,6 +550,7 @@ struct cmd_spec cmd_table[] = { > "Set cache capacity bitmasks(CBM) for a domain", > "[options] <Domain> <CBM>", > "-s <socket> Specify the socket to process, otherwise > all sockets are processed\n" > + "-l <level> Specify the cache level to process, > otherwise L3 cache is processed\n" > "-c Set code CBM if CDP is supported\n" > "-d Set data CBM if CDP is supported\n" > },
diff --git a/tools/libxc/xc_psr.c b/tools/libxc/xc_psr.c index f0aed2d..67556bb 100644 --- a/tools/libxc/xc_psr.c +++ b/tools/libxc/xc_psr.c @@ -266,6 +266,9 @@ int xc_psr_cat_set_domain_data(xc_interface *xch, uint32_t domid, case XC_PSR_CAT_L3_CBM_DATA: cmd = XEN_DOMCTL_PSR_CAT_OP_SET_L3_DATA; break; + case XC_PSR_CAT_L2_CBM: + cmd = XEN_DOMCTL_PSR_CAT_OP_SET_L2_CBM; + break; default: errno = EINVAL; return -1; diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index cdcee5f..a32438c 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -9523,19 +9523,21 @@ int main_psr_cat_cbm_set(int argc, char **argv) char *value; libxl_string_list socket_list; unsigned long start, end; - int i, j, len; + unsigned int i, j, len; + unsigned int lvl = 3; static struct option opts[] = { {"socket", 1, 0, 's'}, {"data", 0, 0, 'd'}, {"code", 0, 0, 'c'}, + {"level", 1, 0, 'l'}, COMMON_LONG_OPTS }; libxl_socket_bitmap_alloc(ctx, &target_map, 0); libxl_bitmap_set_none(&target_map); - SWITCH_FOREACH_OPT(opt, "s:cd", opts, "psr-cat-cbm-set", 2) { + SWITCH_FOREACH_OPT(opt, "s:l:cd", opts, "psr-cat-cbm-set", 2) { case 's': trim(isspace, optarg, &value); split_string_into_string_list(value, ",", &socket_list); @@ -9555,17 +9557,24 @@ int main_psr_cat_cbm_set(int argc, char **argv) case 'c': opt_code = 1; break; + case 'l': + lvl = atoi(optarg); + break; } - if (opt_data && opt_code) { - fprintf(stderr, "Cannot handle -c and -d at the same time\n"); - return -1; - } else if (opt_data) { - type = LIBXL_PSR_CBM_TYPE_L3_CBM_DATA; - } else if (opt_code) { - type = LIBXL_PSR_CBM_TYPE_L3_CBM_CODE; - } else { - type = LIBXL_PSR_CBM_TYPE_L3_CBM; + if (lvl == 2) + type = LIBXL_PSR_CBM_TYPE_L2_CBM; + else if (lvl == 3) { + if (opt_data && opt_code) { + fprintf(stderr, "Cannot handle -c and -d at the same time\n"); + return ERROR_FAIL; + } else if (opt_data) { + type = LIBXL_PSR_CBM_TYPE_L3_CBM_DATA; + } else if (opt_code) { + type = LIBXL_PSR_CBM_TYPE_L3_CBM_CODE; + } else { + type = LIBXL_PSR_CBM_TYPE_L3_CBM; + } } if (libxl_bitmap_is_empty(&target_map)) diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c index c5fbad4..32c3ee5 100644 --- a/tools/libxl/xl_cmdtable.c +++ b/tools/libxl/xl_cmdtable.c @@ -550,6 +550,7 @@ struct cmd_spec cmd_table[] = { "Set cache capacity bitmasks(CBM) for a domain", "[options] <Domain> <CBM>", "-s <socket> Specify the socket to process, otherwise all sockets are processed\n" + "-l <level> Specify the cache level to process, otherwise L3 cache is processed\n" "-c Set code CBM if CDP is supported\n" "-d Set data CBM if CDP is supported\n" },