VirtualBox

Changeset 72820 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Jul 3, 2018 10:16:28 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123364
Message:

VMM/HMVMXR0,HMSVMR0: Compiler barriers with volatiles for fCtxChanged.

Location:
trunk/src/VBox/VMM/VMMR0
Files:
2 edited

Legend:

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

    r72807 r72820  
    25122512     */
    25132513    uint64_t const fCtxChanged = ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged);
     2514    RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
    25142515    AssertMsg(!(fCtxChanged & (HM_CHANGED_ALL_GUEST & ~HM_CHANGED_SVM_HOST_GUEST_SHARED_STATE)),
    25152516              ("fCtxChanged=%#RX64\n", fCtxChanged));
     
    27422743     */
    27432744    uint64_t const fCtxChanged = ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged);
     2745    RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
    27442746    AssertMsg(!(fCtxChanged & (HM_CHANGED_ALL_GUEST & ~HM_CHANGED_SVM_HOST_GUEST_SHARED_STATE)),
    27452747              ("fCtxChanged=%#RX64\n", fCtxChanged));
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r72811 r72820  
    48264826                /* Currently, all mode changes sends us back to ring-3, so these should be set. See @bugref{6944}. */
    48274827                uint64_t const fCtxChanged = ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged);
     4828                RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
    48284829                AssertMsg(fCtxChanged & (  HM_CHANGED_VMX_EXIT_CTLS
    48294830                                         | HM_CHANGED_VMX_ENTRY_CTLS
     
    48544855            /* Currently, all mode changes sends us back to ring-3, so these should be set. See @bugref{6944}. */
    48554856            uint64_t const fCtxChanged = ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged);
     4857            RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
    48564858            AssertMsg(fCtxChanged & (  HM_CHANGED_VMX_EXIT_CTLS
    48574859                                     | HM_CHANGED_VMX_ENTRY_CTLS
     
    81698171    VBOXSTRICTRC rcStrict;
    81708172    uint64_t     fCtxChanged = ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged);
     8173    RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
    81718174    if ((fCtxChanged & (HM_CHANGED_ALL_GUEST & ~HM_CHANGED_VMX_HOST_GUEST_SHARED_STATE)) == HM_CHANGED_GUEST_RIP)
    81728175    {
     
    81988201    /* All the guest state bits should be loaded except maybe the host context and/or the shared host/guest bits. */
    81998202    fCtxChanged = ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged);
     8203    RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
    82008204    AssertMsg(!(fCtxChanged & (HM_CHANGED_ALL_GUEST & ~HM_CHANGED_VMX_HOST_GUEST_SHARED_STATE)),
    82018205              ("fCtxChanged=%#RX64\n", fCtxChanged));
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