[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 07/15] x86: implement set value flow for MBA



On 17-08-31 09:30:47, Roger Pau Monn� wrote:
> On Thu, Aug 31, 2017 at 10:20:10AM +0800, Yi Sun wrote:
> > On 17-08-30 09:31:04, Roger Pau Monn� wrote:
> > > On Thu, Aug 24, 2017 at 09:14:41AM +0800, Yi Sun wrote:
> > > > diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c
> > > > index 4a0c982..ce82975 100644
> > > > --- a/xen/arch/x86/psr.c
> > > > +++ b/xen/arch/x86/psr.c
> > > > @@ -138,6 +138,12 @@ static const struct feat_props {
> > > >  
> > > >      /* write_msr is used to write out feature MSR register. */
> > > >      void (*write_msr)(unsigned int cos, uint32_t val, enum 
> > > > psr_val_type type);
> > > > +
> > > > +    /*
> > > > +     * check_val is used to check if input val fulfills SDM 
> > > > requirement.
> > > > +     * Change it to valid value if SDM allows.
> > > 
> > > I'm not really sure it's a good idea to change the value to a valid
> > > one, IMHO you should just check and print an error if the value is
> > > invalid (and return false of course).
> > > 
> > Per SDM, the HW has ability to automatically change the input value to what 
> > it
> > wants. E.g:
> >   Linear mode: HW wants the input value be 10/20/30/.../90. But user inputs 
> > 15.
> >                Then, HW can automatically change it to 10.
> 
> This seems like a very, very bad idea IMHO. What if I input 15 (which
> is invalid), but I would rather prefer 20 instead of 10?
> 
> I would very much prefer an error, so I can get to chose a valid value
> myself instead of the hardware deciding on my back.
> 
> > Even user inputs a value that does not fulfill HW requirement, HW can 
> > handle it.
> > So, we do not need return error to user. Otherwise, user needs to know 
> > details
> > of MBA.
> > 
> > But the issue here is how we get the actual value and show it to user. 
> > There are
> > two ways to do that:
> > 1. When setting value, check and change it to valid one and save it to our 
> > cache.
> 
> Instead of performing those checks manually, why not simply write the
> value and read it back to see the one the hardware has actually
> chosen (and cache it)?
> 
So, I guess you prefer optioin 2, right? If so, do we need check if input value
is valid? I see above comment that you prefer to return an error and leave the
decision to user.

> Is there any risk in writing an invalid value?

If input value is no more than the thrtl_max got through CPUID, it is fine that
HW can handle it.

> 
> > 2. When getting value, call rdmsr to read the actual value back from HW.
> > 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.