VirtualBox

Changeset 72825 in vbox for trunk/src


Ignore:
Timestamp:
Jul 3, 2018 2:36:06 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123370
Message:

VMM/HMVMXR0: Fix TSC offsetting regression from r123352.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r72820 r72825  
    56275627    }
    56285628
     5629    uint32_t uProcCtls = pVCpu->hm.s.vmx.u32ProcCtls;
    56295630    if (   fOffsettedTsc
    56305631        && RT_LIKELY(!pVCpu->hm.s.fDebugWantRdTscExit))
     
    56325633        if (pVCpu->hm.s.vmx.u64TscOffset != uTscOffset)
    56335634        {
    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);
    56355636            AssertRC(rc);
    56365637            pVCpu->hm.s.vmx.u64TscOffset = uTscOffset;
    56375638        }
    56385639
    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);
    56435644            AssertRC(rc);
     5645            pVCpu->hm.s.vmx.u32ProcCtls = uProcCtls;
    56445646        }
    56455647        STAM_COUNTER_INC(&pVCpu->hm.s.StatTscOffset);
     
    56485650    {
    56495651        /* 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);
    56545656            AssertRC(rc);
     5657            pVCpu->hm.s.vmx.u32ProcCtls = uProcCtls;
    56555658        }
    56565659        STAM_COUNTER_INC(&pVCpu->hm.s.StatTscIntercept);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette