To date, KVM has allowed guests to use paravirtual interfaces regardless of the configured CPUID. While almost any guest will consult the KVM_CPUID_FEATURES leaf _before_ using PV features, it is still undesirable to have such interfaces silently present. This series aims to address the issue by adding explicit checks against the guest's CPUID when servicing any paravirtual feature. Since this effectively changes the guest/hypervisor ABI, a KVM_CAP is warranted to guard the new behavior. Patches 1-2 refactor some of the PV code in anticipation of the change. Patch 3 introduces the checks + KVM_CAP. Finally, patch 4 fixes some doc typos that were noticed when working on this series. v1 => v2: - Strip Change-Id footers (checkpatch is your friend!) v2 => v3: - Mark kvm_write_system_time() as static v3 => v4: - Address Wanpeng's concerns regarding cpuid lookup Parent commit: e792415c5d3e ("KVM: MIPS/VZ: Fix build error caused by 'kvm_run' cleanup") Oliver Upton (4): kvm: x86: encapsulate wrmsr(MSR_KVM_SYSTEM_TIME) emulation in helper fn kvm: x86: set wall_clock in kvm_write_wall_clock() kvm: x86: only provide PV features if enabled in guest's CPUID Documentation: kvm: fix some typos in cpuid.rst Documentation/virt/kvm/api.rst | 11 +++ Documentation/virt/kvm/cpuid.rst | 88 +++++++++++----------- arch/x86/include/asm/kvm_host.h | 15 ++++ arch/x86/kvm/cpuid.c | 7 ++ arch/x86/kvm/cpuid.h | 10 +++ arch/x86/kvm/x86.c | 122 +++++++++++++++++++++++-------- include/uapi/linux/kvm.h | 1 + 7 files changed, 181 insertions(+), 73 deletions(-) -- 2.28.0.220.ged08abb693-goog