vmm: Remove nasty rdmsr() macro (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 17 Aug 2017 16:25:38 +0000 (12:25 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 25 Aug 2017 18:41:49 +0000 (14:41 -0400)
commit63e5e098d89414f3a801dea828d6e604feaca3f8
tree96c50f82eedbc6ee168aba64158c7f4b7dd7ad1b
parent21a797e6906b552a5c46298685edef51f6fdb635
vmm: Remove nasty rdmsr() macro (XCC)

This cleaned up the kernel's MSR code a bit.  The rdmsr() macro actually
cluttered up some of the code, especially in the "just read the host MSRs
and copy to the VMCS" section.

Also, the order of the parameters to rdmsr() was unclear.  In fact, we had
a bug in the user version of the code for emsr_ok (rdx was first, not
second).  Whoops.

We had another user bug in miscenable, where we didn't track PEBS properly.
I just removed that function completely, since it is never called.  Similar
with emsr_mustmatch, both for the kernel and user.

Also note that the user MSR code will panic if you use it.  Previously,
you'd get a GPF if you tried an MSR instruction from userspace.  Instead of
just deleting it all, I left it there with a panic().  Someone else can use
the #arch device to access the MSRs if we feel it is useful.

Reinstall your kernel headers.

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