[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 4/5] tools: add tools support for Intel CDP
On Wed, Sep 02, 2015 at 04:28:01PM +0800, He Chen wrote: > This is the xc/xl changes to support Intel Code/Data Prioritization. > Two new xl commands are introduced to enable/disable CDP dynamically, > and CAT xl commands to set/get CBMs are extended to support CDP. > > Signed-off-by: He Chen <he.chen@xxxxxxxxxxxxxxx> > --- > tools/libxc/include/xenctrl.h | 10 ++++-- > tools/libxc/xc_psr.c | 42 +++++++++++++++++++++- > tools/libxl/libxl.h | 12 +++++++ > tools/libxl/libxl_psr.c | 64 +++++++++++++++++++++++++++++++++- > tools/libxl/libxl_types.idl | 3 ++ > tools/libxl/xl.h | 4 +++ > tools/libxl/xl_cmdimpl.c | 81 > +++++++++++++++++++++++++++++++++++++------ > tools/libxl/xl_cmdtable.c | 15 ++++++++ > 8 files changed, 217 insertions(+), 14 deletions(-) > > diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h > index de3c0ad..665e6bd 100644 > --- a/tools/libxc/include/xenctrl.h > +++ b/tools/libxc/include/xenctrl.h > @@ -2798,7 +2798,10 @@ enum xc_psr_cmt_type { > typedef enum xc_psr_cmt_type xc_psr_cmt_type; > > enum xc_psr_cat_type { > - XC_PSR_CAT_L3_CBM = 1, > + XC_PSR_CAT_L3_CBM = 1, > + XC_PSR_CAT_L3_CODE = 2, > + XC_PSR_CAT_L3_DATA = 3, > + Stray blank line. > }; > typedef enum xc_psr_cat_type xc_psr_cat_type; > > @@ -2824,7 +2827,10 @@ int xc_psr_cat_get_domain_data(xc_interface *xch, > uint32_t domid, > xc_psr_cat_type type, uint32_t target, > uint64_t *data); > int xc_psr_cat_get_l3_info(xc_interface *xch, uint32_t socket, > - uint32_t *cos_max, uint32_t *cbm_len); > + uint32_t *cos_max, uint32_t *cbm_len, > + uint8_t *cdp_enabled); Why does it need to be uint8_t? The name suggests bool should be used. > +int xc_psr_cat_enable_cdp(xc_interface *xch); > +int xc_psr_cat_disable_cdp(xc_interface *xch); > #endif > > #endif /* XENCTRL_H */ > diff --git a/tools/libxc/xc_psr.c b/tools/libxc/xc_psr.c > index d8b3a51..d4ff6f6 100644 > --- a/tools/libxc/xc_psr.c > +++ b/tools/libxc/xc_psr.c > @@ -260,6 +260,12 @@ int xc_psr_cat_set_domain_data(xc_interface *xch, > uint32_t domid, > case XC_PSR_CAT_L3_CBM: > cmd = XEN_DOMCTL_PSR_CAT_OP_SET_L3_CBM; > break; > + case XC_PSR_CAT_L3_CODE: > + cmd = XEN_DOMCTL_PSR_CAT_OP_SET_L3_CODE; > + break; > + case XC_PSR_CAT_L3_DATA: > + cmd = XEN_DOMCTL_PSR_CAT_OP_SET_L3_DATA; > + break; > default: > errno = EINVAL; > return -1; > @@ -287,6 +293,12 @@ int xc_psr_cat_get_domain_data(xc_interface *xch, > uint32_t domid, > case XC_PSR_CAT_L3_CBM: > cmd = XEN_DOMCTL_PSR_CAT_OP_GET_L3_CBM; > break; > + case XC_PSR_CAT_L3_CODE: > + cmd = XEN_DOMCTL_PSR_CAT_OP_GET_L3_CODE; > + break; > + case XC_PSR_CAT_L3_DATA: > + cmd = XEN_DOMCTL_PSR_CAT_OP_GET_L3_DATA; > + break; > default: > errno = EINVAL; > return -1; > @@ -306,7 +318,8 @@ int xc_psr_cat_get_domain_data(xc_interface *xch, > uint32_t domid, > } > [...] > @@ -304,6 +305,22 @@ int libxl_psr_cat_set_cbm(libxl_ctx *ctx, uint32_t domid, > goto out; > } > > + rc = libxl_psr_cat_get_l3_info(ctx, &info, &nr_sockets); > + if (rc) { > + LOGE(ERROR, "Failed to get cat info"); > + goto out; > + } > + > + if (!info->cdp_enabled) { > + if (type == LIBXL_PSR_CBM_TYPE_L3_CODE || > + type == LIBXL_PSR_CBM_TYPE_L3_DATA) You can merge this if statement to parent. if (!info->cdp_enabled && (type == _CODE || type == _DATA)) > + { > + LOGE(ERROR, "Unable to set Code/Data CBM with CDP disabled"); > + rc = EINVAL; > + goto out; > + } > + } > + > libxl_for_each_set_bit(socketid, *target_map) { > if (socketid >= nr_sockets) > break; Need to free memory info points to at the end. > @@ -352,7 +369,7 @@ int libxl_psr_cat_get_l3_info(libxl_ctx *ctx, > libxl_psr_cat_info **info, > > for (i = 0; i < nr_sockets; i++) { > if (xc_psr_cat_get_l3_info(ctx->xch, i, &ptr[i].cos_max, > - &ptr[i].cbm_len)) { > + &ptr[i].cbm_len, &ptr[i].cdp_enabled)) { > libxl__psr_cat_log_err_msg(gc, errno); > rc = ERROR_FAIL; > free(ptr); > @@ -376,6 +393,51 @@ void libxl_psr_cat_info_list_free(libxl_psr_cat_info > *list, int nr) > free(list); > } > [...] > diff --git a/tools/libxl/xl.h b/tools/libxl/xl.h > index 13bccba..e8bb774 100644 > --- a/tools/libxl/xl.h > +++ b/tools/libxl/xl.h > @@ -121,6 +121,10 @@ int main_psr_cmt_show(int argc, char **argv); > int main_psr_cat_cbm_set(int argc, char **argv); > int main_psr_cat_show(int argc, char **argv); > #endif > +#ifdef LIBXL_HAVE_PSR_CDP > +int main_psr_cat_cdp_enable(int argc, char **argv); > +int main_psr_cat_cdp_disable(int argc, char **argv); > +#endif > > void help(const char *command); > > diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c > index ebbb9a5..825d707 100644 > --- a/tools/libxl/xl_cmdimpl.c > +++ b/tools/libxl/xl_cmdimpl.c > @@ -8366,6 +8366,15 @@ int main_psr_cmt_show(int argc, char **argv) > #endif > > #ifdef LIBXL_HAVE_PSR_CAT > +static void psr_cat_print_cdp_status(uint8_t status) > +{ > + if (status == 0) > + printf("%-16s: Disabled\n", "CDP Status"); > + else > + printf("%-16s: Enabled\n", "CDP Status"); > +} > + > + Extraneous blank line. In fact I don't think this a function is necessary. There is nothing wrong with embedding a if statement in psr_cat_hwinfo. > static int psr_cat_hwinfo(void) > { > int rc; > @@ -8390,6 +8399,7 @@ static int psr_cat_hwinfo(void) > } > printf("%-16s: %u\n", "Socket ID", socketid); > printf("%-16s: %uKB\n", "L3 Cache", l3_cache_size); > + psr_cat_print_cdp_status(info->cdp_enabled); > printf("%-16s: %u\n", "Maximum COS", info->cos_max); > printf("%-16s: %u\n", "CBM length", info->cbm_len); > printf("%-16s: %#llx\n", "Default CBM", > @@ -8401,7 +8411,8 @@ out: > return rc; > } > [...] > @@ -8585,6 +8620,32 @@ int main_psr_hwinfo(int argc, char **argv) > return ret; > } > > +#ifdef LIBXL_HAVE_PSR_CDP > +int main_psr_cat_cdp_enable(int argc, char **argv) > +{ > + int ret; > + > + ret = libxl_psr_cat_enable_cdp(ctx); > + if (ret) > + return ret; Please log the error / failure. > + printf("CDP is enabled\n"); > + > + return 0; > +} > + > +int main_psr_cat_cdp_disable(int argc, char **argv) > +{ > + int ret; > + > + ret = libxl_psr_cat_disable_cdp(ctx); > + if (ret) > + return ret; Ditto. Wei. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |