linux/arch/x86/kvm/vmx
Sean Christopherson 982caaa115 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>
2025-02-26 04:17:32 -05:00
..
capabilities.h KVM VMX: Move MSR_IA32_VMX_MISC bit defines to asm/vmx.h 2024-08-22 11:25:53 -07:00
hyperv.c KVM: x86: drop x86.h include from cpuid.h 2024-11-01 09:22:23 -07:00
hyperv.h KVM: x86: Replace (almost) all guest CPUID feature queries with cpu_caps 2024-12-18 14:20:15 -08:00
hyperv_evmcs.c KVM: VMX: Split off hyperv_evmcs.{ch} 2023-12-07 09:34:19 -08:00
hyperv_evmcs.h hyperv: Switch from hyperv-tlfs.h to hyperv/hvhdk.h 2025-01-10 00:54:21 +00:00
main.c KVM: x86: Load DR6 with guest value only before entering .vcpu_run() loop 2025-02-12 08:59:38 -08:00
nested.c KVM: nVMX: Process events on nested VM-Exit if injectable IRQ or NMI is pending 2025-02-26 04:17:32 -05:00
nested.h Merge tag 'kvm-x86-vmx-6.12' of https://github.com/kvm-x86/linux into HEAD 2024-09-17 12:41:23 -04:00
pmu_intel.c KVM: x86: Replace (almost) all guest CPUID feature queries with cpu_caps 2024-12-18 14:20:15 -08:00
posted_intr.c x86/irq: Remove bitfields in posted interrupt descriptor 2024-04-30 00:54:42 +02:00
posted_intr.h KVM: VMX: don't include '<linux/find.h>' directly 2024-12-22 12:04:57 -05:00
run_flags.h KVM/VMX: Use BT+JNC, i.e. EFLAGS.CF to select VMRESUME vs. VMLAUNCH 2024-02-19 16:31:54 -08:00
sgx.c KVM: x86: Replace (almost) all guest CPUID feature queries with cpu_caps 2024-12-18 14:20:15 -08:00
sgx.h
vmcs.h KVM: VMX: Introduce test mode related to EPT violation VE 2024-04-19 12:15:21 -04:00
vmcs12.c KVM: x86: Unify pr_fmt to use module name for all KVM modules 2022-12-29 15:47:35 -05:00
vmcs12.h KVM: nVMX: Update VMCS12_REVISION comment to state it should never change 2024-06-28 08:55:00 -07:00
vmcs_shadow_fields.h
vmenter.S x86/bhi: Mitigate KVM by default 2024-04-08 19:27:06 +02:00
vmx.c KVM: x86: Load DR6 with guest value only before entering .vcpu_run() loop 2025-02-12 08:59:38 -08:00
vmx.h KVM: VMX: refactor PML terminology 2025-01-08 14:19:25 -08:00
vmx_onhyperv.c KVM: VMX: Split off vmx_onhyperv.{ch} from hyperv.{ch} 2023-12-07 09:34:06 -08:00
vmx_onhyperv.h hyperv: Switch from hyperv-tlfs.h to hyperv/hvhdk.h 2025-01-10 00:54:21 +00:00
vmx_ops.h KVM: VMX: Remove the unused variable "gpa" in __invept() 2024-10-30 12:28:37 -07:00
x86_ops.h KVM: x86: Load DR6 with guest value only before entering .vcpu_run() loop 2025-02-12 08:59:38 -08:00