On Thu, Sep 26, 2013 at 08:55:24PM +0200, Borislav Petkov wrote: > On Thu, Sep 26, 2013 at 11:19:15AM -0300, Eduardo Habkost wrote: > > Then we may have a problem: some CPU models already have "movbe" > > included (e.g. Haswell), and patch 6/6 will make "-cpu Haswell" get > > movbe enabled even if it is being emulated. > > Huh? HSW has MOVBE so we won't #UD on it and MOVBE will get executed in > hardware when executing the guest. IOW, we'll never get to the emulation > path of piggybacking on the #UD. > > > So if we really want to avoid enabling emulated features by mistake, > > we may need a new CPU flag in addition to "enforce" to tell QEMU that > > it is OK to enable emulated features (maybe "-cpu ...,emulate"?). > > EMULATED_CPUID are off by default and only if you request them > specifically, they get enabled. Please point me to the code that does this, because I don't see it on patch 6/6. > If you start with "-cpu Haswell", MOVBE > will be already set in the host CPUID. > > Or am I missing something? In the Haswell example, it is unlikely but possible in theory: you would need a CPU that supported all features from Haswell except movbe. But what will happen if you are using "-cpu n270,enforce" on a SandyBridge host? Also, we don't know anything about future CPUs or future features that will end up on EMULATED_CPUID. The current code doesn't have anything to differentiate features that were already included in the CPU definition and ones explicitly enabled in the command-line (and I would like to keep it that way). And just because a feature was explicitly enabled in the command-line, that doesn't mean the user believe it is acceptable to get it running in emulated mode. That's why I propose a new "emulate" flag, to allow features to be enabled in emulated mode. > > > But my question still stands: suppose we had x2apic emulation > > implemented but for some reason it was painfully slow, we wouldn't > > want to enable it by mistake. In this case, it would end up on > > EMULATED_CPUID and not on SUPPORTED_CPUID, right? > > IMHO we want to enable emulation only when explicitly requested... > regardless of the emulation performance. Well, x2apic is emulated by KVM, and it is on SUPPORTED_CPUID. Ditto for tsc-deadline. Or are you talking specifically about instruction emulation? -- 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