From: Paolo Bonzini Date: Fri, 24 Oct 2025 07:18:43 +0000 (+0200) Subject: target/i386: clear CPU_INTERRUPT_SIPI for all accelerators X-Git-Tag: v10.2.0-rc1~40^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5e1d2dea11b803ba9121fc12d3c1662b79ad941;p=thirdparty%2Fqemu.git target/i386: clear CPU_INTERRUPT_SIPI for all accelerators Similar to what commit df32e5c5 did for TCG; fixes boot with multiple processors on WHPX and probably more accelerators Fixes: df32e5c568c ("i386/cpu: Prevent delivering SIPI during SMM in TCG mode", 2025-10-14) Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3178 Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini --- diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c index a502437c30..3838c9f5a6 100644 --- a/target/i386/hvf/x86hvf.c +++ b/target/i386/hvf/x86hvf.c @@ -446,6 +446,7 @@ int hvf_process_events(CPUState *cs) cs->halted = 0; } if (cpu_test_interrupt(cs, CPU_INTERRUPT_SIPI)) { + cpu_reset_interrupt(cs, CPU_INTERRUPT_SIPI); cpu_synchronize_state(cs); do_cpu_sipi(cpu); } diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 4dea1ed8f0..60c7981138 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -5659,6 +5659,7 @@ int kvm_arch_process_async_events(CPUState *cs) cs->halted = 0; } if (cpu_test_interrupt(cs, CPU_INTERRUPT_SIPI)) { + cpu_reset_interrupt(cs, CPU_INTERRUPT_SIPI); kvm_cpu_synchronize_state(cs); do_cpu_sipi(cpu); } diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c index 2e442baf4b..b9bd9ed985 100644 --- a/target/i386/nvmm/nvmm-all.c +++ b/target/i386/nvmm/nvmm-all.c @@ -709,6 +709,7 @@ nvmm_vcpu_loop(CPUState *cpu) cpu->halted = false; } if (cpu_test_interrupt(cpu, CPU_INTERRUPT_SIPI)) { + cpu_reset_interrupt(cpu, CPU_INTERRUPT_SIPI); nvmm_cpu_synchronize_state(cpu); do_cpu_sipi(x86_cpu); } diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 256761834c..6bf8d5f4bb 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1621,6 +1621,7 @@ static void whpx_vcpu_process_async_events(CPUState *cpu) } if (cpu_test_interrupt(cpu, CPU_INTERRUPT_SIPI)) { + cpu_reset_interrupt(cpu, CPU_INTERRUPT_SIPI); whpx_cpu_synchronize_state(cpu); do_cpu_sipi(x86_cpu); }