- Timestamp:
- Jul 5, 2019 4:39:12 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r79490 r79533 3605 3605 * @param pVCpu The cross context virtual CPU structure. 3606 3606 * @param pVmcsInfo The VMCS info. object. 3607 * @param fIsNstGstVmcs Whether this is a nested-guest VMCS. 3608 */ 3609 static void hmR0VmxSetupVmcsMsrPermissions(PVMCPU pVCpu, PVMXVMCSINFO pVmcsInfo, bool fIsNstGstVmcs) 3607 */ 3608 static void hmR0VmxSetupVmcsMsrPermissions(PVMCPU pVCpu, PVMXVMCSINFO pVmcsInfo) 3610 3609 { 3611 3610 Assert(pVmcsInfo->u32ProcCtls & VMX_PROC_CTLS_USE_MSR_BITMAPS); … … 3616 3615 */ 3617 3616 PVM pVM = pVCpu->CTX_SUFF(pVM); 3618 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_IA32_SYSENTER_CS, VMXMSRPM_ALLOW_RD_WR);3619 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_IA32_SYSENTER_ESP, VMXMSRPM_ALLOW_RD_WR);3620 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_IA32_SYSENTER_EIP, VMXMSRPM_ALLOW_RD_WR);3621 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_K8_GS_BASE, VMXMSRPM_ALLOW_RD_WR);3622 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_K8_FS_BASE, VMXMSRPM_ALLOW_RD_WR);3617 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_IA32_SYSENTER_CS, VMXMSRPM_ALLOW_RD_WR); 3618 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_IA32_SYSENTER_ESP, VMXMSRPM_ALLOW_RD_WR); 3619 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_IA32_SYSENTER_EIP, VMXMSRPM_ALLOW_RD_WR); 3620 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_K8_GS_BASE, VMXMSRPM_ALLOW_RD_WR); 3621 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_K8_FS_BASE, VMXMSRPM_ALLOW_RD_WR); 3623 3622 3624 3623 /* … … 3632 3631 */ 3633 3632 if (pVM->cpum.ro.GuestFeatures.fIbpb) 3634 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_IA32_PRED_CMD, VMXMSRPM_ALLOW_RD_WR);3633 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_IA32_PRED_CMD, VMXMSRPM_ALLOW_RD_WR); 3635 3634 if (pVM->cpum.ro.GuestFeatures.fFlushCmd) 3636 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_IA32_FLUSH_CMD, VMXMSRPM_ALLOW_RD_WR);3635 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_IA32_FLUSH_CMD, VMXMSRPM_ALLOW_RD_WR); 3637 3636 if (pVM->cpum.ro.GuestFeatures.fIbrs) 3638 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_IA32_SPEC_CTRL, VMXMSRPM_ALLOW_RD_WR);3637 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_IA32_SPEC_CTRL, VMXMSRPM_ALLOW_RD_WR); 3639 3638 3640 3639 #if HC_ARCH_BITS == 64 … … 3645 3644 if (pVM->hm.s.fAllow64BitGuests) 3646 3645 { 3647 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_K8_LSTAR, VMXMSRPM_ALLOW_RD_WR);3648 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_K6_STAR, VMXMSRPM_ALLOW_RD_WR);3649 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_K8_SF_MASK, VMXMSRPM_ALLOW_RD_WR);3650 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, f IsNstGstVmcs, MSR_K8_KERNEL_GS_BASE, VMXMSRPM_ALLOW_RD_WR);3646 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_K8_LSTAR, VMXMSRPM_ALLOW_RD_WR); 3647 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_K6_STAR, VMXMSRPM_ALLOW_RD_WR); 3648 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_K8_SF_MASK, VMXMSRPM_ALLOW_RD_WR); 3649 hmR0VmxSetMsrPermission(pVCpu, pVmcsInfo, false, MSR_K8_KERNEL_GS_BASE, VMXMSRPM_ALLOW_RD_WR); 3651 3650 } 3652 3651 #endif … … 3898 3897 /* Set up MSR permissions that don't change through the lifetime of the VM. */ 3899 3898 if (pVmcsInfo->u32ProcCtls & VMX_PROC_CTLS_USE_MSR_BITMAPS) 3900 hmR0VmxSetupVmcsMsrPermissions(pVCpu, pVmcsInfo , false /* fIsNstGstVmcs */);3899 hmR0VmxSetupVmcsMsrPermissions(pVCpu, pVmcsInfo); 3901 3900 3902 3901 /* Set up secondary processor-based VM-execution controls if the CPU supports it. */
Note:
See TracChangeset
for help on using the changeset viewer.