VMM: Use the I_POKE_CORE IRQ for posted IRQs
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 5 Feb 2016 19:19:48 +0000 (14:19 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 11 Feb 2016 15:39:30 +0000 (10:39 -0500)
commit9108b7deeb15f5d33e27b171fae15cacaec21ed9
tree3b5c60342b26fa5fcc05a2a1bd510bd740f85edc
parent293320bcdd73284e700b8f0067ed906b31011c96
VMM: Use the I_POKE_CORE IRQ for posted IRQs

Posting IRQs is a lot like poking a core, especially when you try and think
about it in an architecture independent manner.  I_POKE_CORE is normally a
way to make sure a core isn't halted.  For VMs, it's now also a way to poke
the VMX hardware to inject an IRQ if necessary.

Note that if we want to post an IRQ and send an I_POKE_CORE, but the VM
exits before the IRQ gets there, we just run the regular POKE_ handler,
which does nothing.

This also makes our life a little easier, in that handle_vmexit_ext_irq()
doesn't need to think about getting an I_POKE.  Poke's aren't full-up IRQs
(requiring a registered handler) regardless of whether they are sent to a
core running a VM or a 'regular' core.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/trap.h
kern/arch/x86/trapentry64.S
kern/arch/x86/vmm/intel/vmx.c
kern/arch/x86/vmm/vmm.c