- Timestamp:
- Jul 3, 2018 2:36:06 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 123370
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r72820 r72825 5627 5627 } 5628 5628 5629 uint32_t uProcCtls = pVCpu->hm.s.vmx.u32ProcCtls; 5629 5630 if ( fOffsettedTsc 5630 5631 && RT_LIKELY(!pVCpu->hm.s.fDebugWantRdTscExit)) … … 5632 5633 if (pVCpu->hm.s.vmx.u64TscOffset != uTscOffset) 5633 5634 { 5634 int rc = VMXWriteVmcs64(VMX_VMCS64_CTRL_TSC_OFFSET_FULL, pVCpu->hm.s.vmx.u64TscOffset);5635 int rc = VMXWriteVmcs64(VMX_VMCS64_CTRL_TSC_OFFSET_FULL, uTscOffset); 5635 5636 AssertRC(rc); 5636 5637 pVCpu->hm.s.vmx.u64TscOffset = uTscOffset; 5637 5638 } 5638 5639 5639 if ( pVCpu->hm.s.vmx.u32ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT)5640 { 5641 pVCpu->hm.s.vmx.u32ProcCtls &= ~VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT;5642 int rc = VMXWriteVmcs32(VMX_VMCS32_CTRL_PROC_EXEC, pVCpu->hm.s.vmx.u32ProcCtls);5640 if (uProcCtls & VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT) 5641 { 5642 uProcCtls &= ~VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT; 5643 int rc = VMXWriteVmcs32(VMX_VMCS32_CTRL_PROC_EXEC, uProcCtls); 5643 5644 AssertRC(rc); 5645 pVCpu->hm.s.vmx.u32ProcCtls = uProcCtls; 5644 5646 } 5645 5647 STAM_COUNTER_INC(&pVCpu->hm.s.StatTscOffset); … … 5648 5650 { 5649 5651 /* We can't use TSC-offsetting (non-fixed TSC, warp drive active etc.), VM-exit on RDTSC(P). */ 5650 if (!( pVCpu->hm.s.vmx.u32ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT))5651 { 5652 pVCpu->hm.s.vmx.u32ProcCtls |= VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT;5653 int rc = VMXWriteVmcs32(VMX_VMCS32_CTRL_PROC_EXEC, pVCpu->hm.s.vmx.u32ProcCtls);5652 if (!(uProcCtls & VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT)) 5653 { 5654 uProcCtls |= VMX_VMCS_CTRL_PROC_EXEC_RDTSC_EXIT; 5655 int rc = VMXWriteVmcs32(VMX_VMCS32_CTRL_PROC_EXEC, uProcCtls); 5654 5656 AssertRC(rc); 5657 pVCpu->hm.s.vmx.u32ProcCtls = uProcCtls; 5655 5658 } 5656 5659 STAM_COUNTER_INC(&pVCpu->hm.s.StatTscIntercept);
Note:
See TracChangeset
for help on using the changeset viewer.