|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8 07/24] x86: refactor psr: implement get value flow.
On 17-02-28 12:44:34, Roger Pau Monn� wrote:
> On Wed, Feb 15, 2017 at 04:49:22PM +0800, Yi Sun wrote:
> > +static bool l3_cat_get_val(const struct feat_node *feat, unsigned int cos,
> > + enum cbm_type type, uint64_t *val)
> > +{
> > + if ( cos > feat->info.l3_cat_info.cos_max )
> > + /* Use default value. */
> > + cos = 0;
>
> I don't know much, but shouldn't this return false instead of silently
> defaulting to 0? This doesn't seem to be what the caller expects.
>
If cos exceeds the cos_max, we should return default value saved in
cos_reg_val[0]. Let me explain more, different features have different
cos_max, e.g. L3 CAT cos_max=16, L2 CAT cos_max=8, user can set L3 CAT
COS[9] for a domain. When COS ID 9 is set to ASSOC register, it works
for all features. HW automatically works as default value for L2 CAT
because the COS ID exceeds the max.
> > @@ -498,6 +516,15 @@ int psr_get_info(unsigned int socket, enum cbm_type
> > type,
> > if ( feat->feature != feat_type )
> > continue;
> >
> > + if ( d )
> > + {
> > + cos = d->arch.psr_cos_ids[socket];
> > + if ( feat->ops.get_val(feat, cos, type, val) )
> > + return 0;
> > + else
>
> No need for the "else" branch here.
>
Thanks!
> Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |