diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2015-03-09 20:56:43 +0100 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2015-03-13 13:44:43 -0300 |
commit | ae1f57670703656cc9f293722c3b8b6782f8ab3f (patch) | |
tree | fd4fdfaed468f32cc417fb2b67318dbf7310a23a | |
parent | b34a80517bfcd917bc59d9670d8f465a564af3b9 (diff) | |
download | op-kernel-dev-ae1f57670703656cc9f293722c3b8b6782f8ab3f.zip op-kernel-dev-ae1f57670703656cc9f293722c3b8b6782f8ab3f.tar.gz |
KVM: nVMX: Do not emulate #UD while in guest mode
While in L2, leave all #UD to L2 and do not try to emulate it. If L1 is
interested in doing this, it reports its interest via the exception
bitmap, and we never get into handle_exception of L0 anyway.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
-rw-r--r-- | arch/x86/kvm/vmx.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index fbd9499..50c675b 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -5065,6 +5065,10 @@ static int handle_exception(struct kvm_vcpu *vcpu) } if (is_invalid_opcode(intr_info)) { + if (is_guest_mode(vcpu)) { + kvm_queue_exception(vcpu, UD_VECTOR); + return 1; + } er = emulate_instruction(vcpu, EMULTYPE_TRAP_UD); if (er != EMULATE_DONE) kvm_queue_exception(vcpu, UD_VECTOR); |