[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v10 10/25] x86: refactor psr: L3 CAT: set value: assemble features value array.
>>> On 01.04.17 at 15:53, <yi.y.sun@xxxxxxxxxxxxxxx> wrote: > @@ -593,7 +616,21 @@ int psr_get_val(struct domain *d, unsigned int socket, > /* Set value functions */ > static unsigned int get_cos_num(const struct psr_socket_info *info) > { > - return 0; > + unsigned int num = 0, i; > + > + /* Get all features total amount. */ > + for ( i = 0; i < PSR_SOCKET_MAX_FEAT; i++ ) > + { > + const struct feat_node *feat = info->features[i]; > + if ( !feat ) Blank line between ... (and I likely won't repeat this any further) > + continue; > + > + feat = info->features[i]; ??? > @@ -611,7 +679,40 @@ static int insert_val_to_array(uint32_t val[], > enum cbm_type type, > uint32_t new_val) > { > - return -EINVAL; > + const struct feat_node *feat; > + unsigned int i; > + > + ASSERT(feat_type < PSR_SOCKET_MAX_FEAT); > + > + /* Insert new value into array according to feature's position in array. > */ > + for ( i = 0; i < feat_type; i++ ) > + { > + feat = info->features[i]; > + if ( !feat ) > + continue; > + > + if ( array_len <= feat->props->cos_num ) > + return -ENOSPC; > + > + array_len -= feat->props->cos_num; > + > + val += feat->props->cos_num; > + } > + > + feat = info->features[feat_type]; > + if ( !feat ) > + return -ENOENT; > + > + if ( array_len < feat->props->cos_num ) > + return -ENOSPC; > + > + if ( !psr_check_cbm(feat->props->cbm_len, new_val) ) > + return -EINVAL; > + > + /* Value setting position is same as feature array. */ > + val[0] = new_val; How come this is array index 0 unconditionally, when cos_num may be greater than 1? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |