Changeset 79764 in vbox for trunk/src/VBox
- Timestamp:
- Jul 14, 2019 4:13:40 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r79760 r79764 974 974 static void hmR0VmxRemoveProcCtlsVmcs(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient, uint32_t uProcCtls) 975 975 { 976 PVMXVMCSINFO pVmcsInfo = pVmxTransient->pVmcsInfo; 977 if (pVmcsInfo->u32ProcCtls & uProcCtls) 978 { 976 979 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX 977 bool const fRemoveCtls = !pVmxTransient->fIsNestedGuest978 ? true979 : !CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_RDTSC_EXIT);980 bool const fRemoveCtls = !pVmxTransient->fIsNestedGuest 981 ? true 982 : !CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, uProcCtls); 980 983 #else 981 NOREF(pVCpu);982 bool const fRemoveCtls = true;984 NOREF(pVCpu); 985 bool const fRemoveCtls = true; 983 986 #endif 984 PVMXVMCSINFO pVmcsInfo = pVmxTransient->pVmcsInfo; 985 if ( fRemoveCtls 986 && (pVmcsInfo->u32ProcCtls & uProcCtls)) 987 { 988 pVmcsInfo->u32ProcCtls &= ~uProcCtls; 989 int rc = VMXWriteVmcs32(VMX_VMCS32_CTRL_PROC_EXEC, pVmcsInfo->u32ProcCtls); 990 AssertRC(rc); 987 if (fRemoveCtls) 988 { 989 pVmcsInfo->u32ProcCtls &= ~uProcCtls; 990 int rc = VMXWriteVmcs32(VMX_VMCS32_CTRL_PROC_EXEC, pVmcsInfo->u32ProcCtls); 991 AssertRC(rc); 992 } 991 993 } 992 994 } … … 7728 7730 7729 7731 7732 /** 7733 * Fixes up attributes for the specified segment register. 7734 * 7735 * @param pVCpu The cross context virtual CPU structure. 7736 * @param pSelReg The segment register that needs fixing. 7737 * @param idxSel The VMCS field for the corresponding segment register. 7738 */ 7730 7739 static void hmR0VmxFixUnusableSegRegAttr(PVMCPU pVCpu, PCPUMSELREG pSelReg, uint32_t idxSel) 7731 7740 {
Note:
See TracChangeset
for help on using the changeset viewer.