Sorry for replying to my own message, but I believe we can now summarize a possible solution that makes everybody happy, and the plans for it: On Thu, Jun 05, 2014 at 03:02:53PM -0300, Eduardo Habkost wrote: > On Thu, Jun 05, 2014 at 07:39:42PM +0200, Paolo Bonzini wrote: > > Il 05/06/2014 19:19, Eduardo Habkost ha scritto: > > >On Thu, Jun 05, 2014 at 06:57:57PM +0200, Paolo Bonzini wrote: > > >>Il 05/06/2014 18:54, Alexander Graf ha scritto: > > >>>> > > >>>>What about: > > >>>> > > >>>>- letting "-cpu foo,+emulatedfeature" just work > > >>>> > > >>>>- adding emulated=yes that blindly enables all emulated features > > >>>> > > >>>>- making "-cpu ...,check" prints a warning for emulated features > > >>>>unless emulated=yes > > >>> > > >>>How about we remove the emulated=yes from this list? Then I'm happy :). > > >> > > >>So: > > >> > > >>- "-cpu foo" doesn't enable any emulated feature > > > > > >What if "foo" already has movbe in the CPU model definition? > > > > It will be disabled. > > I don't disagree with that. But not that if it will be disabled, that > means "-cpu foo,enforce" will abort. Typo. I meant "note that". > > But note that if you use "-cpu foo" without enforce, that means you can > suddenly get movbe enabled once it gets included on GET_SUPPORTED_CPUID. > > So, if you care about predictable CPUID results and you want to enable > an emulated/experimental feature, you have to do two things: > > 1) Make sure your setup works with "enforce", so you know you will > never get any feature suddenly and silently enabled. > 2) Add "+feature,allow-emulation=yes" to the command-line, keep > "enforce" and you will _not_ get any other experimental feature > suddenly enabled (because now you are using "enforce"). So, the above would cover the use cases I was thinking about. But I understand you have a different use case and you want to avoid GET_EMULATED_CPUID-related surprises even if not using "enforce". For that, you need a more fine-tuned solution using "*feature" or "feature=force". (Personally, I prefer "feature=force" instead of "*feature"). Implementing "feature=force" would be more cleanly implemented after we introduce the CPU feature properties, which we have been trying to include for 4 or 5 QEMU releases, and it was never merged. In the meantime, we could: * Include the less fine-tuned "allow-emulation" (or "allow-experimental-features") option, which is implemented by this series, for people who use "enforce" and/or don't care too much about getting other experimental features enabled. * Wait until somebody implements "feature=force". Personally, I don't care which plan we follow, as I am not an user of GET_EMULATED_CPUID. I will leave that decision for the QEMU maintainers and other developers. -- Eduardo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html