On Tue, Sep 03, 2019 at 15:32:34 -0400, Collin Walling wrote: > On 8/20/19 10:06 AM, Jiri Denemark wrote: > > First, let me apologize for such a late review. I'll try my best to > > review your series earlier next time. > > > > Your review is greatly appreciated! I haven't replied to your other > posts on this series as my comments were mostly acknowledgements rather > than discussion pieces. I'm working through them. > > > On Wed, Jul 17, 2019 at 10:03:21 -0400, Collin Walling wrote: > >> When baselining CPU models and the user appends the --features argument > >> to the command, s390x will only report back features that supersede the > >> base model definition. > >> > >> *NOTE* if the --features flag is intended to expand /ALL/ features > >> available to a CPU model (such as the huge list of features reported > >> by a full CPU model expansion), please let me know and I can resolve > >> this. > > > > I'm not sure how well this fits s390 world, but the semantics of > > VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES flag is to report all CPU > > features which are hidden behind the CPU model. That is, all feature > > which you'd get when starting QEMU with just the CPU model name and no > > additional features. The extra features should not be touched at all. > > Specifically, removing them when the flag is not used is wrong. > > > > To me this looks like the flag should really result in running > > query-cpu-model-expansion (but likely the "static" one rather then > > "full" expansion) on the baseline CPU model and reporting the enabled > > features along with those already included in the baseline feature set. > > > > Actually, query-cpu-model-baseline will return a CPU model along with a > feature set. The features returned are the same as those produced from a > static expansion on the model. > > Correct me if I am wrong here: virsh should report features *only* if the > --features flag is present. Otherwise, we only report the model name (which > can be accomplished by stripping the result of all reported features).
No, this is wrong in general (although it maybe correct for s390, I don't know). Let me explain with some hypothetical CPU models. Model1 (when used as -cpu Model1) will enable features f1, f2, f3. Model2 will enable f1, f2, f3, f4, f5. Model3 will enable f1, f2, f3, f4, f6. Running baseline command for [Model1, Model2, Model3] should return Model1 with no additional features as [f1, f2, f3] are in only ones common to all three models and they are all enabled by Model1. However, baseline of [Model2, Model3] should return Model1 + f4. The common set of features is [f1, f2, f3, f4], but Model1 would enable [f1, f2, f3] only, which means we need to add f4 explicitly. With --features, even the features enabled implicitly by a specific CPU model should be returned. That is, the first result would be Model1 + [f1, f2, f3] and the second result would be Model1 + [f1, f2, f3, f4]. In other words, stripping all features if no --features option is used is wrong. Only features implicitly enabled by the CPU model should be stripped. Specifically, baseline without --features on the following CPU definition <cpu mode='custom' match='exact'> <model>Model1</model> <feature name='f4' policy='require'/> </cpu> should be the same definition (i.e., Model1 + f4). The question is whether you can enabled extra features on s390 or you can only use plain CPU models with no additional features. If additional features are allowed, I'd guess baseline without features should return the result of the QMP command minus the features a static expansion of the CPU model itself would return (this is assuming f4 will be included in the result we get from QEMU for Model1 + f4). When --features is used, the result from QEMU should be returned. I hope it's clear now. However, I'm not sure how CPU models work on s390 and I'd be happy if you could explain it to me. Especially, whether something similar to what I described can happen there. Jirka -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list