summaryrefslogtreecommitdiffstats
path: root/arch/x86/include
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2014-03-07 20:03:12 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2014-03-11 08:41:45 +0100
commitb6b8a1451fc40412c57d10c94b62e22acab28f94 (patch)
tree7a0d2a778c46831c596ab08190e0b7af05e86d52 /arch/x86/include
parentb010926dc896366602b8dd2430bd3af8c3ef854a (diff)
downloadop-kernel-dev-b6b8a1451fc40412c57d10c94b62e22acab28f94.zip
op-kernel-dev-b6b8a1451fc40412c57d10c94b62e22acab28f94.tar.gz
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>
Diffstat (limited to 'arch/x86/include')
-rw-r--r--arch/x86/include/asm/kvm_host.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 85be627..461d00a 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -767,6 +767,8 @@ struct kvm_x86_ops {
enum x86_intercept_stage stage);
void (*handle_external_intr)(struct kvm_vcpu *vcpu);
bool (*mpx_supported)(void);
+
+ int (*check_nested_events)(struct kvm_vcpu *vcpu, bool external_intr);
};
struct kvm_arch_async_pf {
OpenPOWER on IntegriCloud