aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorSean Christopherson <seanjc@google.com>2024-11-27 17:33:45 -0800
committerSean Christopherson <seanjc@google.com>2024-12-18 14:19:40 -0800
commit01d1059d635a101a21f145284e8023b0ffa5f7ed (patch)
tree24552eca44a2cb19d28b20b657ec322434875804
parentKVM: selftests: Update x86's KVM PV test to match KVM's disabling exits behavior (diff)
downloadwireguard-linux-01d1059d635a101a21f145284e8023b0ffa5f7ed.tar.xz
wireguard-linux-01d1059d635a101a21f145284e8023b0ffa5f7ed.zip
KVM: x86: Zero out PV features cache when the CPUID leaf is not present
Clear KVM's PV feature cache prior when processing a new guest CPUID so that KVM doesn't keep a stale cache entry if userspace does KVM_SET_CPUID2 multiple times, once with a PV features entry, and a second time without. Fixes: 66570e966dd9 ("kvm: x86: only provide PV features if enabled in guest's CPUID") Cc: Oliver Upton <oliver.upton@linux.dev> Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com> Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com> Link: https://lore.kernel.org/r/20241128013424.4096668-19-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
-rw-r--r--arch/x86/kvm/cpuid.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index 626a243febc9..1157357f499a 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -272,6 +272,8 @@ void kvm_update_pv_runtime(struct kvm_vcpu *vcpu)
{
struct kvm_cpuid_entry2 *best = kvm_find_kvm_cpuid_features(vcpu);
+ vcpu->arch.pv_cpuid.features = 0;
+
/*
* save the feature bitmap to avoid cpuid lookup for every PV
* operation