[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 02/15] Rename PSR sysctl/domctl interfaces and xsm policy to make them be general
On Sat, Sep 23, 2017 at 09:48:11AM +0000, Yi Sun wrote: > --- a/xen/arch/x86/domctl.c > +++ b/xen/arch/x86/domctl.c > @@ -1439,60 +1439,60 @@ long arch_do_domctl( > } > break; > > - case XEN_DOMCTL_psr_cat_op: > - switch ( domctl->u.psr_cat_op.cmd ) > + case XEN_DOMCTL_psr_alloc: > + switch ( domctl->u.psr_alloc.cmd ) > { > uint32_t val32; > > - case XEN_DOMCTL_PSR_CAT_OP_SET_L3_CBM: > - ret = psr_set_val(d, domctl->u.psr_cat_op.target, > - domctl->u.psr_cat_op.data, > + case XEN_DOMCTL_PSR_SET_L3_CBM: > + ret = psr_set_val(d, domctl->u.psr_alloc.target, > + domctl->u.psr_alloc.data, > PSR_CBM_TYPE_L3); > break; > > - case XEN_DOMCTL_PSR_CAT_OP_SET_L3_CODE: > - ret = psr_set_val(d, domctl->u.psr_cat_op.target, > - domctl->u.psr_cat_op.data, > + case XEN_DOMCTL_PSR_SET_L3_CODE: > + ret = psr_set_val(d, domctl->u.psr_alloc.target, > + domctl->u.psr_alloc.data, > PSR_CBM_TYPE_L3_CODE); > break; > > - case XEN_DOMCTL_PSR_CAT_OP_SET_L3_DATA: > - ret = psr_set_val(d, domctl->u.psr_cat_op.target, > - domctl->u.psr_cat_op.data, > + case XEN_DOMCTL_PSR_SET_L3_DATA: > + ret = psr_set_val(d, domctl->u.psr_alloc.target, > + domctl->u.psr_alloc.data, > PSR_CBM_TYPE_L3_DATA); > break; > > - case XEN_DOMCTL_PSR_CAT_OP_SET_L2_CBM: > - ret = psr_set_val(d, domctl->u.psr_cat_op.target, > - domctl->u.psr_cat_op.data, > + case XEN_DOMCTL_PSR_SET_L2_CBM: > + ret = psr_set_val(d, domctl->u.psr_alloc.target, > + domctl->u.psr_alloc.data, > PSR_CBM_TYPE_L2); > break; > > - case XEN_DOMCTL_PSR_CAT_OP_GET_L3_CBM: > - ret = psr_get_val(d, domctl->u.psr_cat_op.target, > + case XEN_DOMCTL_PSR_GET_L3_CBM: > + ret = psr_get_val(d, domctl->u.psr_alloc.target, > &val32, PSR_CBM_TYPE_L3); > - domctl->u.psr_cat_op.data = val32; > + domctl->u.psr_alloc.data = val32; > copyback = true; > break; > > - case XEN_DOMCTL_PSR_CAT_OP_GET_L3_CODE: > - ret = psr_get_val(d, domctl->u.psr_cat_op.target, > + case XEN_DOMCTL_PSR_GET_L3_CODE: > + ret = psr_get_val(d, domctl->u.psr_alloc.target, > &val32, PSR_CBM_TYPE_L3_CODE); > - domctl->u.psr_cat_op.data = val32; > + domctl->u.psr_alloc.data = val32; > copyback = true; > break; > > - case XEN_DOMCTL_PSR_CAT_OP_GET_L3_DATA: > - ret = psr_get_val(d, domctl->u.psr_cat_op.target, > + case XEN_DOMCTL_PSR_GET_L3_DATA: > + ret = psr_get_val(d, domctl->u.psr_alloc.target, > &val32, PSR_CBM_TYPE_L3_DATA); > - domctl->u.psr_cat_op.data = val32; > + domctl->u.psr_alloc.data = val32; > copyback = true; > break; > > - case XEN_DOMCTL_PSR_CAT_OP_GET_L2_CBM: > - ret = psr_get_val(d, domctl->u.psr_cat_op.target, > + case XEN_DOMCTL_PSR_GET_L2_CBM: > + ret = psr_get_val(d, domctl->u.psr_alloc.target, > &val32, PSR_CBM_TYPE_L2); > - domctl->u.psr_cat_op.data = val32; > + domctl->u.psr_alloc.data = val32; > copyback = true; This: ret = psr_get_val(...); domctl->u.psr...; copyback = true; Construct is quite repetitive, maybe you could consider adding a local macro to hide it? Maybe then you could also hide the val32 declaration inside of it. > break; > > diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c > index daa2aeb..c851511 100644 > --- a/xen/arch/x86/psr.c > +++ b/xen/arch/x86/psr.c > @@ -382,7 +382,7 @@ static bool l3_cdp_get_feat_info(const struct feat_node > *feat, > if ( !cat_get_feat_info(feat, data, array_len) ) > return false; > > - data[PSR_INFO_IDX_CAT_FLAG] |= XEN_SYSCTL_PSR_CAT_L3_CDP; > + data[PSR_INFO_IDX_CAT_FLAG] |= XEN_SYSCTL_PSR_L3_CDP; > > return true; > } > diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c > index c3fdae8..e44d8ad 100644 > --- a/xen/arch/x86/sysctl.c > +++ b/xen/arch/x86/sysctl.c > @@ -171,45 +171,45 @@ long arch_do_sysctl( > > break; > > - case XEN_SYSCTL_psr_cat_op: > - switch ( sysctl->u.psr_cat_op.cmd ) > + case XEN_SYSCTL_psr_alloc: > + switch ( sysctl->u.psr_alloc.cmd ) > { > uint32_t data[PSR_INFO_ARRAY_SIZE]; > > - case XEN_SYSCTL_PSR_CAT_get_l3_info: > + case XEN_SYSCTL_PSR_get_l3_info: > { > - ret = psr_get_info(sysctl->u.psr_cat_op.target, > + ret = psr_get_info(sysctl->u.psr_alloc.target, > PSR_CBM_TYPE_L3, data, ARRAY_SIZE(data)); > if ( ret ) > break; > > - sysctl->u.psr_cat_op.u.cat_info.cos_max = > + sysctl->u.psr_alloc.u.cat_info.cos_max = > data[PSR_INFO_IDX_COS_MAX]; > - sysctl->u.psr_cat_op.u.cat_info.cbm_len = > + sysctl->u.psr_alloc.u.cat_info.cbm_len = > data[PSR_INFO_IDX_CAT_CBM_LEN]; > - sysctl->u.psr_cat_op.u.cat_info.flags = > + sysctl->u.psr_alloc.u.cat_info.flags = > data[PSR_INFO_IDX_CAT_FLAG]; > > - if ( __copy_field_to_guest(u_sysctl, sysctl, u.psr_cat_op) ) > + if ( __copy_field_to_guest(u_sysctl, sysctl, u.psr_alloc) ) > ret = -EFAULT; > break; > } > > - case XEN_SYSCTL_PSR_CAT_get_l2_info: > + case XEN_SYSCTL_PSR_get_l2_info: > { > - ret = psr_get_info(sysctl->u.psr_cat_op.target, > + ret = psr_get_info(sysctl->u.psr_alloc.target, > PSR_CBM_TYPE_L2, data, ARRAY_SIZE(data)); > if ( ret ) > break; > > - sysctl->u.psr_cat_op.u.cat_info.cos_max = > + sysctl->u.psr_alloc.u.cat_info.cos_max = > data[PSR_INFO_IDX_COS_MAX]; > - sysctl->u.psr_cat_op.u.cat_info.cbm_len = > + sysctl->u.psr_alloc.u.cat_info.cbm_len = > data[PSR_INFO_IDX_CAT_CBM_LEN]; > - sysctl->u.psr_cat_op.u.cat_info.flags = > + sysctl->u.psr_alloc.u.cat_info.flags = > data[PSR_INFO_IDX_CAT_FLAG]; The above repetition is also unneeded AFAICT. Why not simplify the switch to: uint32_t data[PSR_INFO_ARRAY_SIZE]; enum cbm_type type; switch ( sysctl->u.psr_alloc.cmd ) { case XEN_SYSCTL_PSR_get_l3_info: type = PSR_CBM_TYPE_L3; break; case XEN_SYSCTL_PSR_get_l2_info: type = PSR_CBM_TYPE_L2; break; default: return -EOPNOTSUPP; } ret = psr_get_info(sysctl->u.psr_alloc.target, type, data, ARRAY_SIZE(data)); if ( ret ) break; sysctl->u.psr_alloc.u.cat_info.cos_max = data[PSR_INFO_IDX_COS_MAX]; ... It would prevent some of this code repetition IMHO. Thanks, Roger. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |