]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
KVM: nVMX: Process events on nested VM-Exit if injectable IRQ or NMI is pending
authorSean Christopherson <seanjc@google.com>
Mon, 24 Feb 2025 23:55:37 +0000 (15:55 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 26 Feb 2025 09:17:32 +0000 (04:17 -0500)
commit982caaa1150479f022003390cd72a1941663d211
tree8d117b373675fdbd02135afc81e57ce03dc374df
parent17bcd714426386fda741a4bccd96a2870179344b
KVM: nVMX: Process events on nested VM-Exit if injectable IRQ or NMI is pending

Process pending events on nested VM-Exit if the vCPU has an injectable IRQ
or NMI, as the event may have become pending while L2 was active, i.e. may
not be tracked in the context of vmcs01.  E.g. if L1 has passed its APIC
through to L2 and an IRQ arrives while L2 is active, then KVM needs to
request an IRQ window prior to running L1, otherwise delivery of the IRQ
will be delayed until KVM happens to process events for some other reason.

The missed failure is detected by vmx_apic_passthrough_tpr_threshold_test
in KVM-Unit-Tests, but has effectively been masked due to a flaw in KVM's
PIC emulation that causes KVM to make spurious KVM_REQ_EVENT requests (and
apparently no one ever ran the test with split IRQ chips).

Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-ID: <20250224235542.2562848-3-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx/nested.c