linux/arch/x86/kvm
Sean Christopherson 8081ad06b6 KVM: x86: Set KVM_REQ_EVENT if run is canceled with req_immediate_exit set
Re-request KVM_REQ_EVENT if vcpu_enter_guest() bails after processing
pending requests and an immediate exit was requested.  This fixes a bug
where a pending event, e.g. VMX preemption timer, is delayed and/or lost
if the exit was deferred due to something other than a higher priority
_injected_ event, e.g. due to a pending nested VM-Enter.  This bug only
affects the !injected case as kvm_x86_ops.cancel_injection() sets
KVM_REQ_EVENT to redo the injection, but that's purely serendipitous
behavior with respect to the deferred event.

Note, emulated preemption timer isn't the only event that can be
affected, it simply happens to be the only event where not re-requesting
KVM_REQ_EVENT is blatantly visible to the guest.

Fixes: f4124500c2 ("KVM: nVMX: Fully emulate preemption timer")
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Message-Id: <20200423022550.15113-4-sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-05-13 12:14:28 -04:00
..
mmu KVM: x86/mmu: Avoid an extra memslot lookup in try_async_pf() for L2 2020-04-21 09:13:08 -04:00
svm KVM: SVM: Implement check_nested_events for NMI 2020-05-13 12:14:24 -04:00
vmx KVM: nVMX: Open a window for pending nested VMX preemption timer 2020-05-13 12:14:27 -04:00
cpuid.c KVM: pass through CPUID(0x80000006) 2020-04-15 12:08:41 -04:00
cpuid.h KVM: x86: Fix BUILD_BUG() in __cpuid_entry_get_reg() w/ CONFIG_UBSAN=y 2020-03-31 10:51:45 -04:00
debugfs.c KVM: no need to check return value of debugfs_create functions 2019-08-05 12:55:49 +02:00
emulate.c ARM: 2020-04-02 15:13:15 -07:00
hyperv.c Merge branch 'kvm-amd-fixes' into HEAD 2020-05-13 12:14:05 -04:00
hyperv.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499 2019-06-19 17:09:53 +02:00
i8254.c KVM: x86: Fix print format and coding style 2020-03-16 17:57:08 +01:00
i8254.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
i8259.c KVM: x86: Refactor picdev_write() to prevent Spectre-v1/L1TF attacks 2020-01-27 19:59:37 +01:00
ioapic.c kvm: ioapic: Restrict lazy EOI update to edge-triggered interrupts 2020-05-04 12:29:05 -04:00
ioapic.h KVM: X86: Move irrelevant declarations out of ioapic.h 2020-01-08 17:33:14 +01:00
irq_comm.c KVM: x86: don't notify userspace IOAPIC on edge-triggered interrupt EOI 2020-02-21 18:04:57 +01:00
irq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 320 2019-06-05 17:37:05 +02:00
irq.h KVM: X86: Move irrelevant declarations out of ioapic.h 2020-01-08 17:33:14 +01:00
Kconfig vhost: refine vhost and vringh kconfig 2020-04-01 12:06:26 -04:00
kvm_cache_regs.h KVM: x86: Copy kvm_x86_ops by value to eliminate layer of indirection 2020-03-31 10:48:08 -04:00
kvm_emulate.h ARM: 2020-04-02 15:13:15 -07:00
lapic.c KVM: x86: Return updated timer current count register from KVM_GET_LAPIC 2020-04-15 12:08:40 -04:00
lapic.h KVM: x86: Return updated timer current count register from KVM_GET_LAPIC 2020-04-15 12:08:40 -04:00
Makefile kvm: Disable objtool frame pointer checking for vmenter.S 2020-04-20 17:11:19 -04:00
mmu_audit.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499 2019-06-19 17:09:53 +02:00
mmu.h KVM: x86: Copy kvm_x86_ops by value to eliminate layer of indirection 2020-03-31 10:48:08 -04:00
mmutrace.h KVM: x86: fix incorrect comparison in trace event 2020-02-20 18:13:44 +01:00
mtrr.c KVM: x86: Protect MSR-based index computations in fixed_msr_to_seg_unit() from Spectre-v1/L1TF attacks 2020-01-27 19:59:39 +01:00
pmu.c KVM: x86: Copy kvm_x86_ops by value to eliminate layer of indirection 2020-03-31 10:48:08 -04:00
pmu.h KVM: x86: Copy kvm_x86_ops by value to eliminate layer of indirection 2020-03-31 10:48:08 -04:00
trace.h ARM: 2020-04-02 15:13:15 -07:00
tss.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
x86.c KVM: x86: Set KVM_REQ_EVENT if run is canceled with req_immediate_exit set 2020-05-13 12:14:28 -04:00
x86.h KVM: x86: Introduce KVM_REQ_TLB_FLUSH_CURRENT to flush current ASID 2020-04-21 09:12:53 -04:00