[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v9 1/2] x86/viridian: Re-purpose the HVM parameter to be a feature mask
> -----Original Message----- > From: Ian Jackson [mailto:Ian.Jackson@xxxxxxxxxxxxx] > Sent: 03 September 2014 17:26 > To: Paul Durrant > Cc: xen-devel@xxxxxxxxxxxxx; Keir (Xen.org); Ian Campbell; Stefano Stabellini; > Dave Scott > Subject: Re: [PATCH v9 1/2] x86/viridian: Re-purpose the HVM parameter to > be a feature mask > > Paul Durrant writes ("[PATCH v9 1/2] x86/viridian: Re-purpose the HVM > parameter to be a feature mask"): > > The following commits introduced the time reference counter MSR and > > TSC/APIC frequency MSRs into the viridian feature set respectively: > ... > > The viridian option in xl.cfg(5) has also been changed to a string list so > > that the sets can be individually sepcified. For compatibility, if the > > option is specified as a boolean, then a true (1) value will be translated > > to a string list containing "base" and "freq". > > We had a conversation on IRC about the API. See below. > > For libxl I think this means: > > - Keep the existing flag > > - Introduce two new bitmaps called something like > viridian_features_{enable,disable} > > - Features actually enabled are > !defbool_value(viridian) ? 0 : > ((viridian_features_enable | default) & ~viridian_features_disable) > > The feature bits would be provided via a libxl enum either specified > with values 1,2,4 etc. or (better) with a new `shifted' property. > Ok. > For xl I would suggest: > > Keep the existing config name and do not introduce any new variables. > > Existing values 0 and 1 (or false and true) mean `enable, defaults'. > > Alternatively user can specify comma-separated list of {feature > name, or `all'} each optionally preceded by `!'. That means > `enable, adjust feature set accordingly'. > Thanks for the summary. It was (mostly) the xl part I was not sure about. V10 patches coming shortly... Cheers, Paul > Ian. > > 16:25 <Diziet> ijc: Looking at this viridian stuff I'm not particularly > enamoured by this integer list API for something that could be > a > bitmask. Also it lacks sensible defaulting. > 16:25 <Diziet> What do you think ? > 16:26 <@ijc> Diziet: IIRC my opinion was there should be a defbool for each > individual feature > 16:27 <@ijc> a bitmask or a list lacks the necessary defaulting behaviour I > think. > 16:27 <@ijc> a bitmask is certainly better than a list though, but not my > prefeence > 16:27 <xadimgnik> isn't an empty list a reasonable default? > 16:28 <@ijc> that only allows a global default, not a per feature default, I > think > 16:28 <Diziet> If we want to add a feature in the future that's on by default, > we can't do so, with the current API. > 16:28 <Diziet> If we are sure never to want to do that then I guess we can > live > with it. > 16:29 <xadimgnik> why not? you'd simply default it to on in libxl unless an > option turning it off were passed in the list > 16:29 <Diziet> For defaulting behaviour with bitmasks we would need to > have > separate "enable" and "disable" bitmasks. > 16:30 <Diziet> xadimgnik: If we do that we can't turn it off by default in the > future. > 16:30 <Diziet> Also I wonder whether much of the time people would prefer > to > specify "all available" > 16:30 <Diziet> Which the current API doesn't provide. A bitmask would if you > were permitted to pass ~ > 16:30 <Diziet> 0 > 16:32 <xadimgnik> hmm, 'all available' may be reasonable... I'd kind of prefer > it if folks actually had to specify what they wanted though > 16:32 <Diziet> Why would you prefer that ? > 16:33 <xadimgnik> using all available would mean new enlightenments get > turned > on by default when VMs are moved to newer versions of Xen > 16:34 <xadimgnik> and that may cause some surprise in some cases I guess > 16:35 <Diziet> `Moved' = migrated ? Or just booted on the new setup ? > 16:36 <xadimgnik> well the enlightenment would remain off on migrate > (because > the save record has the actual viridian HVM param in it), > but > would become enabled on reboot when the 'all available' in > the config file takes effect > 16:37 <Diziet> That doesn't sound very dangerous. Perhaps it's not desirable > in all configurations but forbidding the user from specifying > it > seems rather strong. > 16:37 <@ijc> I still think an explicit named defbool per enlightenment is > better than a bitmap > 16:38 <xadimgnik> Not dangerous, but it's the sort of thing that leads to > support tickets being raised against XenServer > 16:38 <Diziet> ijc: How would the user specify "all available" ? > 16:38 <Diziet> xadimgnik: So you can just not do that for your users. > 16:43 <xadimgnik> yes, that's true; if you want an 'all available' then maybe > a > bitmask is the way to go > 16:44 <@ijc> Diziet: all available wold be leave them all as default, > wouldn'tit? > 16:45 <@ijc> I'd imageind that the existing field (which must remain) would > serve as a global on/off switch > 16:46 <xadimgnik> perhaps leave the boolean option in xl.cfg and then have > a > list which, if empty, means 'all available'? > 16:48 <Diziet> Let's think firstly about API. The existing API must remain > but > I thought it was going to be deprecated. > 16:49 <Diziet> If we don't deprecate it then we can use it to gate the whole > thing. > 16:49 <Diziet> In which case perhaps we don't need per-feature defaults. > I'm > not sure. > 16:49 <Diziet> Personally I think simpler would be to have two bitmaps, > enable > and disable, and keep the old defbool for compatibility only. > 16:50 <Diziet> With a rule that passing ~0 for either enable or disable is > permitted. !!(enable & disable) would be an error. > 16:51 <xadimgnik> I'm ok with that if ijc is > 16:51 <Diziet> libxl would translate "viridian='on'" to enable==~0 > 16:52 <Diziet> ijc's proposal seems to be that each individual one would have > its own defbool defaulting to on, gated on the existing defbool > which defaults to 0. > 16:53 <Diziet> But that would make it difficult to specify "exactly these" > because there's no comprehensive list of the defbools to set to > false. > 16:53 <@ijc> own defbool defaulting to a sane defaultm, no necedssarily on > 16:53 <Diziet> ijc: Right. > 16:53 <@ijc> A helper "set all to false"? > 16:53 <Diziet> How ugly. > 16:53 <@ijc> With a bitmap what happens when the 33rd enlightment is > added? (or > the 65th, or the 129th...) > 16:53 <Diziet> Are we expecting even 32 of these ? > 16:54 <Diziet> If we run out of bitmap we make a new one. > 16:54 <xadimgnik> not really > 16:54 <Diziet> If it might be that a sane default for `I'm running Windows > give > me the best thing' is not `all enabled' then my proposal is > insufficiently rich. > 16:54 <Diziet> In that case I prefer ijc's proposal but with a bitmap instead > of the defbool. Or we could have an array of defbools indexed > by enum or something. > 16:55 <Diziet> s/a bitmap/two bitmaps/ > 16:55 <Diziet> s/the defbool/&s > 16:56 <Diziet> If we go with bitmaps then the enum values should be called > *_shift so that when we fix the API to have the flag values > directly we haven't stolen the proper name. > 16:57 <Diziet> (Or we could fix the idl compiler right away, I guess, although > that's a bit of a can of worms at this stage.) > 16:58 -!- sstabellini [~sstabelli@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] has > joined #xendevel > 16:59 <Diziet> ijc: ^ > 17:00 <@ijc> what needs changing in teh IDL? > 17:00 <Diziet> You should be able to write .viridian_disable = > some_flag|some_other_flag > 17:01 <Diziet> when right now if we just use an enum you would have to > write > .viridian_disable = (1UL<<some_flag)|(1UL<<some_other_flag) > 17:02 <@ijc> Or declare the enum with values 1, 2, 4 etc. I suppose adding a > "shifted" parameter to the Enumeration class would be reasonably > trivial > 17:06 <Diziet> ijc: Either would work. And we could do the former and switch > to the latter later. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |