|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v12 12/23] x86: refactor psr: L3 CAT: set value: implement write msr flow.
>>> Yi Sun <yi.y.sun@xxxxxxxxxxxxxxx> 06/14/17 3:25 AM >>>
> +struct cos_write_info
> +{
> + unsigned int cos;
> + struct feat_node *feature;
> + uint32_t *val;
const?
> static int write_psr_msrs(unsigned int socket, unsigned int cos,
> uint32_t val[], unsigned int array_len,
> enum psr_feat_type feat_type)
> {
> - return -ENOENT;
> + unsigned int i;
> + struct psr_socket_info *info = get_socket_info(socket);
> + struct cos_write_info data =
> + {
> + .cos = cos,
> + .feature = info->features[feat_type],
> + .props = feat_props[feat_type],
> + };
> +
> + if ( cos > info->features[feat_type]->cos_max )
> + return -EINVAL;
> +
> + /* Skip to the feature's value head. */
> + for ( i = 0; i < feat_type; i++ )
> + {
> + if ( !info->features[i] )
> + continue;
> +
> + if ( !feat_props[i] )
> + {
> + ASSERT_UNREACHABLE();
> + return -ENOENT;
> + }
> +
> + if ( array_len <= feat_props[feat_type]->cos_num )
> + return -ENOSPC;
> +
> + array_len -= feat_props[feat_type]->cos_num;
> +
> + val += feat_props[feat_type]->cos_num;
Well, you guess it. But additionally - doesn't the array index in all three
cases above need to be i? If so, please also check other patches (including
earlier ones, where I then may have overlooked this). It is anyway worth to
consider making this skip-prior-features loop a helper function, as this isn't
the first time this occurs. Otoh this would involve quite a bit of passing
return values via pointers, so maybe that wouldn't be too efficient. And I
guess macroizing this may end up looking a little clumsy / convoluted.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |