When KVM also presents Hyper-V features (which is useful because Windows behaves better), Linux guests prefer KVM because emulated leaves are at 0x40000000 and the native ones are at 0x40000100.
However, Linux is then not accounting for the offset when reading the available hypervisor features from CPUID. Instead of looking at 0x40000101, it will always look at 0x40000001. This series makes sure that features such as async page faults or steal time are available even if, for whatever reason, Hyper-V features are enabled. As a side effect, patch 1 makes a bunch of code non inline, which also makes sense since it should only be called during initialization. As a result, vmlinux .text size decreases by 96 bytes. Please review! Paolo Bonzini (2): x86, kvm: cache the base of the KVM cpuid leaves x86, kvm: correctly access the KVM_CPUID_FEATURES leaf at 0x40000101 arch/x86/include/asm/kvm_para.h | 33 ++++++++++++--------------------- arch/x86/kernel/kvm.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 21 deletions(-) -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/