[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v9 15/25] x86: refactor psr: CDP: implement get hw info flow.
>>> On 16.03.17 at 12:08, <yi.y.sun@xxxxxxxxxxxxxxx> wrote: > --- a/xen/arch/x86/sysctl.c > +++ b/xen/arch/x86/sysctl.c > @@ -180,10 +180,36 @@ long arch_do_sysctl( > > ret = psr_get_info(sysctl->u.psr_cat_op.target, > PSR_CBM_TYPE_L3, data, ARRAY_SIZE(data)); > - > - sysctl->u.psr_cat_op.u.l3_info.cbm_len = > data[PSR_INFO_IDX_CBM_LEN]; > - sysctl->u.psr_cat_op.u.l3_info.cos_max = > data[PSR_INFO_IDX_COS_MAX]; > - sysctl->u.psr_cat_op.u.l3_info.flags = data[PSR_INFO_IDX_FLAG]; > + if ( !ret ) > + { > + sysctl->u.psr_cat_op.u.l3_info.cbm_len = > + data[PSR_INFO_IDX_CBM_LEN]; > + sysctl->u.psr_cat_op.u.l3_info.cos_max = > + data[PSR_INFO_IDX_COS_MAX]; > + sysctl->u.psr_cat_op.u.l3_info.flags = > + data[PSR_INFO_IDX_FLAG]; > + } > + else > + { > + /* > + * Check if CDP is enabled. > + * > + * Per spec, L3 CAT and CDP cannot co-exist. So, we need > replace > + * output values to CDP's if it is enabled. > + */ > + ret = psr_get_info(sysctl->u.psr_cat_op.target, > + PSR_CBM_TYPE_L3_CODE, data, > + ARRAY_SIZE(data)); I think this could/should be done without such a strange retry mechanism. You can find out which of the features is available, can't you? > + if ( !ret ) > + { > + sysctl->u.psr_cat_op.u.l3_info.cbm_len = > + data[PSR_INFO_IDX_CBM_LEN]; > + sysctl->u.psr_cat_op.u.l3_info.cos_max = > + data[PSR_INFO_IDX_COS_MAX]; > + sysctl->u.psr_cat_op.u.l3_info.flags = > + data[PSR_INFO_IDX_FLAG]; > + } > + } > > if ( !ret && __copy_field_to_guest(u_sysctl, sysctl, > u.psr_cat_op) ) > ret = -EFAULT; So where is PSR_CBM_TYPE_L3_DATA being handled? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |