On Wed, Oct 4, 2023 at 12:59 AM Borislav Petkov <bp@xxxxxxxxx> wrote: > > On Tue, Oct 03, 2023 at 07:44:51PM -0700, Jim Mattson wrote: > > The business of declaring breaking changes to the architectural > > specification in a CPUID bit has never made much sense to me. > > How else should they be expressed then? > > In some flaky PDF which changes URLs whenever the new corporate CMS gets > installed? > > Or we should do f/m/s matching which doesn't make any sense for VMs? > > When you think about it, CPUID is the best thing we have. > > > No one is likely to query CPUID.80000021H.EAX[bit 21] today, but if > > someone does query the bit in the future, they can reasonably expect > > that WRMSR({FS,GS,KERNELGS}_BASE) is a serializing operation whenever > > this bit is clear. Therefore, any hypervisor that doesn't pass the bit > > through is broken. Sadly, this also means that for a heterogenous > > migration pool, the hypervisor must set this bit in the guest CPUID if > > it is set on any host in the pool. Yes, that means that the legacy > > behavior may sometimes be present in a VM that enumerates the CPUID > > bit, but that's the best we can do. > > Yes, add this to your commit message. > > > I'm a little surprised at the pushback, TBH. Are you implying that > > there is some advantage to *not* passing this bit through? > > We don't add stuff which is not worth adding. There has to be *at* > *least* some justification for it. Let me propose the following axiom as justification: KVM_GET_SUPPORTED_CPUID must pass through any defeature bits that are set on the host, unless KVM is prepared to emulate the missing feature. Here, a defeature bit is any CPUID bit where a value of '1' indicates the absence of a feature. > Thx. > > -- > Regards/Gruss, > Boris. > > https://people.kernel.org/tglx/notes-about-netiquette