VMM: Add a syscall to poke a guest pcore (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 8 Feb 2016 17:29:27 +0000 (12:29 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 11 Feb 2016 15:39:30 +0000 (10:39 -0500)
commit43f65968f258274dd148dc94b11424b3e9d1aa70
tree6a8ae1a0ac372f9c665dc8a46fe7288b66b32a1e
parente16b7275f12a68ffa631e3b003adbba9b6452703
VMM: Add a syscall to poke a guest pcore (XCC)

Posted IRQs in VMX are a lot like poking the guest pcore, so we'll just use
a syscall for it.

There's a bit of nastiness with error handling.  So far, it's a real pain
to find out if a posted IRQ landed on the VM and handling if it didn't.
(When the POKE IRQ lands and the core wasn't a VM, how do we know for
certain which VM we were supposed to interrupt, without doing something
painful?).

The general Akaros philosophy here is to post a bit in memory and poke
spuriously.  When it comes to notifying vcores, we set notif_pending, send
a (possibly spurious) __notify, and if we missed it, we'll see the
notif_pending the next time we __startcore.  Hopefully we can do something
similar with posted IRQs.

This also cleans up all of the vmctl hacks, none of which are needed
anymore.

Reinstall your kernel headers.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/vmm/intel/vmx.c
kern/arch/x86/vmm/vmm.c
kern/arch/x86/vmm/vmm.h
kern/drivers/dev/cons.c
kern/include/ros/bits/syscall.h
kern/src/syscall.c
tests/vmm/vmrunkernel.c