[PATCH 45/60] kvm: x86: Update state for all plane VCPUs after CPUID update
Jörg Rödel <[email protected]> Mon, 8 Jun 2026 16:42:37 +0200
| Newsgroups | dev.linux.lists.coconut-svsm,dev.linux.lists.kvmarm,dev.linux.lists.loongarch,org.infradead.lists.kvm-riscv,org.kernel.vger.kvm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-mips,org.ozlabs.lists.linuxppc-dev |
|---|---|
| Message-ID | <[email protected]> |
From: Joerg Roedel <[email protected]> Make sure to update CPUID dependent state for all VCPUs of a given plane when CPUID state is updated. Signed-off-by: Joerg Roedel <[email protected]> --- arch/x86/kvm/cpuid.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 27e2f7e25038..fab075bb6fdc 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -513,6 +513,8 @@ static int kvm_set_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid_entry2 *e2, { struct kvm_vcpu_common *common = vcpu->common; u32 vcpu_caps[NR_KVM_CPU_CAPS]; + struct kvm_vcpu *v; + unsigned i; int r; /* @@ -562,9 +564,11 @@ static int kvm_set_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid_entry2 *e2, #ifdef CONFIG_KVM_HYPERV if (kvm_cpuid_has_hyperv(vcpu)) { - r = kvm_hv_vcpu_init(vcpu); - if (r) - goto err; + vcpu_for_each_plane(common, i, v) { + r = kvm_hv_vcpu_init(vcpu); + if (r) + goto err; + } } #endif @@ -572,10 +576,12 @@ static int kvm_set_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid_entry2 *e2, if (r) goto err; + vcpu_for_each_plane(vcpu->common, i, v) { #ifdef CONFIG_KVM_XEN - vcpu->arch.xen.cpuid = kvm_get_hypervisor_cpuid(vcpu, XEN_SIGNATURE); + v->arch.xen.cpuid = kvm_get_hypervisor_cpuid(vcpu, XEN_SIGNATURE); #endif - kvm_vcpu_after_set_cpuid(vcpu); + kvm_vcpu_after_set_cpuid(v); + } success: kvfree(e2); -- 2.53.0