KVM: nVMX: Rework interception of IRQs and NMIs
authorJan Kiszka <jan.kiszka@siemens.com>
Fri, 7 Mar 2014 19:03:12 +0000 (20:03 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 11 Mar 2014 07:41:45 +0000 (08:41 +0100)
commitb6b8a1451fc40412c57d10c94b62e22acab28f94
tree7a0d2a778c46831c596ab08190e0b7af05e86d52
parentb010926dc896366602b8dd2430bd3af8c3ef854a
KVM: nVMX: Rework interception of IRQs and NMIs

Move the check for leaving L2 on pending and intercepted IRQs or NMIs
from the *_allowed handler into a dedicated callback. Invoke this
callback at the relevant points before KVM checks if IRQs/NMIs can be
injected. The callback has the task to switch from L2 to L1 if needed
and inject the proper vmexit events.

The rework fixes L2 wakeups from HLT and provides the foundation for
preemption timer emulation.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c