vmm: Allow VMMs to change vmexit conditions (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 23 Aug 2017 18:57:47 +0000 (14:57 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 25 Aug 2017 18:41:49 +0000 (14:41 -0400)
commit64c78fd849a5e1ddcc1ba58326806ab87c755fad
treecccd50f1c3edc2e795191d2ec3a2661dce69d765
parent4ab381061e7891df8bfe6e0a19ff0c35eecc4ee3
vmm: Allow VMMs to change vmexit conditions (XCC)

The 2LS (or any HR3 app) can change certain vmexit conditions.  For VMX,
these are the VMX controls.  For AMD, we'll have to do something similar.

Right now, you can control exit on halt (default yes) and exit on pause
(default no).

The greedy mode scheduler will turn off halt exiting, so that when the
guest wants to halt, the core will actually halt.  This will cut down on
the interference with hyperthreads/caches.  2LSs can actually change this
on the fly, subject to the number of host cores available.

Ideally, we'd allow mwait too, but we need to sort out letting the guest
mwait for power management, but not use it for monitor-mwait.  As is, they
actually could monitor-mwait, but once we tell them that mwait (and implied
monitor) is available, we can't renege.  That means we wouldn't be able to
change the exiting status on the fly without the guest potentially sleeping
forever.

Reinstall your kernel headers.

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