Re-enabled event injection via vmctl during vmx RESUME
authorMichael Taufen <mtaufen@gmail.com>
Fri, 22 Jan 2016 18:28:41 +0000 (10:28 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 25 Jan 2016 14:35:16 +0000 (09:35 -0500)
commit1be7805168b9a3083670af03c04041247b138565
tree3595f8883332c88be9f6d25fc48715699d9b45f4
parent6ae8195b99f28d2f2735dcde2a723a4bde3142ef
Re-enabled event injection via vmctl during vmx RESUME

We need to use event injection to get certain interrupts, like #GP, to the
VM. It turns out that due to the way Intel designed the virtual interrupt
delivery mechanism, we cannot use it to send interrupts 0x00 through 0x0f.
This is because the interrupt will only be processed if the high 4 bits
(7:4) of the Requesting Virtual Interrupt (RVI) portion (this is where we
put the interrupt id) of the Guest Interrupt Status field (which is part
of the Virtual Machine Control Structure) are STRICTLY greater than bits
7:4 of the Virtual Processor-Priority Register (VPPR). The VPPR has a
minimum value of 0. So bits 7:4 of RVI can never be strictly greater than
those of the VPPR for the first 16 interrupts.

Signed-off-by: Michael Taufen <mtaufen@gmail.com>
Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/vmm/intel/vmx.c