linux/arch/x86/kvm
Paolo Bonzini 771a579c6e Merge branch 'kvm-svm-harden' into HEAD
This fixes three issues in nested SVM:

1) in the shutdown_interception() vmexit handler we call kvm_vcpu_reset().
However, if running nested and L1 doesn't intercept shutdown, the function
resets vcpu->arch.hflags without properly leaving the nested state.
This leaves the vCPU in inconsistent state and later triggers a kernel
panic in SVM code.  The same bug can likely be triggered by sending INIT
via local apic to a vCPU which runs a nested guest.

On VMX we are lucky that the issue can't happen because VMX always
intercepts triple faults, thus triple fault in L2 will always be
redirected to L1.  Plus, handle_triple_fault() doesn't reset the vCPU.
INIT IPI can't happen on VMX either because INIT events are masked while
in VMX mode.

Secondarily, KVM doesn't honour SHUTDOWN intercept bit of L1 on SVM.
A normal hypervisor should always intercept SHUTDOWN, a unit test on
the other hand might want to not do so.

Finally, the guest can trigger a kernel non rate limited printk on SVM
from the guest, which is fixed as well.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-11-17 11:51:09 -05:00
..
mmu KVM: x86/mmu: Do not recover dirty-tracked NX Huge Pages 2022-11-17 11:26:35 -05:00
svm Merge branch 'kvm-svm-harden' into HEAD 2022-11-17 11:51:09 -05:00
vmx Merge branch 'kvm-svm-harden' into HEAD 2022-11-17 11:51:09 -05:00
.gitignore KVM: x86: use a separate asm-offsets.c file 2022-11-09 12:10:17 -05:00
cpuid.c KVM: x86: Insert "AMD" in KVM_X86_FEATURE_PSFD 2022-11-09 12:31:15 -05:00
cpuid.h KVM: x86: Add dedicated helper to get CPUID entry with significant index 2022-07-14 11:38:32 -04:00
debugfs.c KVM: x86: Reduce refcount if single_open() fails in kvm_mmu_rmaps_stat_open() 2022-10-27 04:41:54 -04:00
emulate.c KVM: x86: move SMM exit to a new file 2022-11-09 12:31:18 -05:00
fpu.h KVM: x86: Move FPU register accessors into fpu.h 2021-06-17 13:09:24 -04:00
hyperv.c KVM: nVMX: Support PERF_GLOBAL_CTRL with enlightened VMCS 2022-09-26 12:02:47 -04:00
hyperv.h KVM: x86: Report error when setting CPUID if Hyper-V allocation fails 2022-09-26 12:02:39 -04:00
i8254.c KVM: x86: PIT: Preserve state of speaker port data bit 2022-06-08 13:06:20 -04:00
i8254.h KVM: x86: PIT: Preserve state of speaker port data bit 2022-06-08 13:06:20 -04:00
i8259.c KVM: x86/i8259: Remove a dead store of irq in a conditional block 2022-04-02 05:41:19 -04:00
ioapic.c KVM: x86/ioapic: Remove unused "addr" and "length" of ioapic_read_indirect() 2022-02-10 13:47:13 -05:00
ioapic.h x86/kvm: remove unused ack_notifier callbacks 2021-11-18 07:05:57 -05:00
irq_comm.c KVM: x86/xen: Make kvm_xen_set_evtchn() reusable from other places 2022-04-02 05:41:14 -04:00
irq.c KVM: replace direct irq.h inclusion 2022-11-09 12:31:37 -05:00
irq.h x86/kvm: remove unused ack_notifier callbacks 2021-11-18 07:05:57 -05:00
Kconfig KVM: allow compiling out SMM support 2022-11-09 12:31:19 -05:00
kvm_cache_regs.h KVM: x86: start moving SMM-related functions to new files 2022-11-09 12:31:16 -05:00
kvm_emulate.h KVM: x86: do not define SMM-related constants if SMM disabled 2022-11-09 12:31:21 -05:00
kvm_onhyperv.c KVM: x86: Uninline and export hv_track_root_tdp() 2022-02-10 13:47:19 -05:00
kvm_onhyperv.h KVM: x86: Uninline and export hv_track_root_tdp() 2022-02-10 13:47:19 -05:00
kvm-asm-offsets.c KVM: SVM: move MSR_IA32_SPEC_CTRL save/restore to assembly 2022-11-09 12:25:53 -05:00
lapic.c KVM: x86: start moving SMM-related functions to new files 2022-11-09 12:31:16 -05:00
lapic.h KVM: x86: start moving SMM-related functions to new files 2022-11-09 12:31:16 -05:00
Makefile KVM: allow compiling out SMM support 2022-11-09 12:31:19 -05:00
mmu.h KVM: SVM: Disable SEV-ES support if MMIO caching is disable 2022-08-10 15:08:25 -04:00
mtrr.c
pmu.c KVM: x86/pmu: Defer counter emulated overflow via pmc->prev_counter 2022-11-09 12:31:36 -05:00
pmu.h KVM: x86/pmu: Defer reprogram_counter() to kvm_pmu_handle_event() 2022-11-09 12:31:36 -05:00
reverse_cpuid.h KVM: SEV: Mask CPUID[0x8000001F].eax according to supported features 2021-04-26 05:27:15 -04:00
smm.c KVM: x86: smm: preserve interrupt shadow in SMRAM 2022-11-09 12:31:26 -05:00
smm.h KVM: x86: smm: preserve interrupt shadow in SMRAM 2022-11-09 12:31:26 -05:00
trace.h KVM: x86: Print guest pgd in kvm_nested_vmenter() 2022-09-26 12:02:33 -04:00
tss.h
x86.c Merge branch 'kvm-svm-harden' into HEAD 2022-11-17 11:51:09 -05:00
x86.h KVM: x86: Track supported PERF_CAPABILITIES in kvm_caps 2022-11-09 12:31:11 -05:00
xen.c KVM: x86/xen: Fix eventfd error handling in kvm_xen_eventfd_assign() 2022-10-28 06:47:26 -04:00
xen.h KVM: x86: do not set st->preempted when going back to user space 2022-06-08 04:21:06 -04:00