On 02/02/2018 21:28, Konrad Rzeszutek Wilk wrote: >>>> Nothing would *set* the IBPB bit though, since that's a "virtual" bit >>>> on Intel hardware. The comment explains why we have that |= F(IBPB), >>>> and if the comment wasn't true, we wouldn't need that code either. >>> But this seems wrong. That is on Intel CPUs we will advertise on >>> AMD leaf that the IBPB feature is available. >>> >>> Shouldn't we just check to see if the machine is AMD before advertising >>> this bit? >> No. The AMD feature bits give us more fine-grained support for exposing >> IBPB or IBRS alone, so we expose those bits on Intel too. > But but.. that runs smack against the idea of exposing a platform that > is as close to emulating the real hardware as possible. > > As in I would never expect an Intel CPU to expose the IBPB on the 0x8000_0008 > leaf. Hence KVM (nor any hypervisor) should not do it either. This is KVM_GET_*SUPPORTED*_CPUID. The actual CPUID bits that are exposed (and also which CPUID leafs are there, even though this one is present in both Intel and AMD) are determined by userspace. Paolo