Always allow access to the sysenter cs/esp/eip MSRs since they

are automatically saved and restored in the VMCS.

Reviewed by:	neel
Obtained from:	NetApp
This commit is contained in:
Peter Grehan 2013-01-25 21:38:31 +00:00
parent b218348bc3
commit 1fb0ea3f1a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=245917

View File

@ -696,6 +696,10 @@ vmx_vminit(struct vm *vm)
* vm-exit and vm-entry respectively. The host FSBASE and GSBASE are
* always restored from the vmcs host state area on vm-exit.
*
* The SYSENTER_CS/ESP/EIP MSRs are identical to FS/GSBASE in
* how they are saved/restored so can be directly accessed by the
* guest.
*
* Guest KGSBASE is saved and restored in the guest MSR save area.
* Host KGSBASE is restored before returning to userland from the pcb.
* There will be a window of time when we are executing in the host
@ -708,6 +712,9 @@ vmx_vminit(struct vm *vm)
*/
if (guest_msr_rw(vmx, MSR_GSBASE) ||
guest_msr_rw(vmx, MSR_FSBASE) ||
guest_msr_rw(vmx, MSR_SYSENTER_CS_MSR) ||
guest_msr_rw(vmx, MSR_SYSENTER_ESP_MSR) ||
guest_msr_rw(vmx, MSR_SYSENTER_EIP_MSR) ||
guest_msr_rw(vmx, MSR_KGSBASE) ||
guest_msr_rw(vmx, MSR_EFER))
panic("vmx_vminit: error setting guest msr access");