VMM: perform per-guest-pcore init at setup (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 25 Jan 2016 19:23:15 +0000 (14:23 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 2 Feb 2016 22:43:52 +0000 (17:43 -0500)
commit53232d622f56bf90d663d1a90736f097a46006b0
tree158c1a31ba85298e17b3616a9bbd54a99b08ec5e
parentd0d03e35e13794fe9b378944f4b52981cac4d088
VMM: perform per-guest-pcore init at setup (XCC)

The EOI bitmap, PIR, VAPIC, and APIC pages all need to be set up per
VMCS/vcpu/guest pcore.  We had been doing this during the REG_RSP_RIP_CR3,
which was shorthand for "first time through."  Now, we do that during
initializing the entire proc VMM.

Most of the changes involve passing the guest pcore init info down through
the syscall and init paths.  I also made a helper for setting up the VMCS
pages, since the PIR, VAPIC, and APIC all follow the same pattern.  That
helper is also able to fail, which wasn't considered before.

Reinstall your kernel headers (vmctl changed).

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