VirtualBox

Changeset 87543 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Feb 2, 2021 5:00:24 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
142569
Message:

VMM/HMVMX: Use g_HmMsrs instead of pVM->hm.s.vmx.Msrs in ring-0, part 2. bugref:9217

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/HMAll.cpp

    r87542 r87543  
    683683
    684684        if (   pVM->hm.s.vmx.fSupported
    685             && (pVM->hm.s.vmx.Msrs.ProcCtls.n.allowed1 & VMX_PROC_CTLS_USE_MSR_BITMAPS))
     685            && (  CTX_EXPR(pVM->hm.s.vmx.MsrsForRing3.ProcCtls.n.allowed1, g_HmMsrs.u.vmx.ProcCtls.n.allowed1, RT_NOTHING)
     686                & VMX_PROC_CTLS_USE_MSR_BITMAPS))
    686687            return true;
    687688    }
  • trunk/src/VBox/VMM/VMMAll/HMVMXAll.cpp

    r87541 r87543  
    767767    {
    768768        /* If bit N is set in cr0_fixed0, then it must be set in the guest's cr0. */
    769         uint32_t uCr0Mask = (uint32_t)CTX_EXPR(pVM->hm.s.vmx.Msrs.u64Cr0Fixed0, g_HmMsrs.u.vmx.u64Cr0Fixed0, RT_NOTHING);
     769        uint32_t uCr0Mask = (uint32_t)CTX_EXPR(pVM->hm.s.vmx.MsrsForRing3.u64Cr0Fixed0, g_HmMsrs.u.vmx.u64Cr0Fixed0, RT_NOTHING);
    770770
    771771        /* We ignore the NE bit here on purpose; see HMR0.cpp for details. */
     
    786786
    787787        /* If bit N is cleared in cr0_fixed1, then it must be zero in the guest's cr0. */
    788         uCr0Mask = (uint32_t)~CTX_EXPR(pVM->hm.s.vmx.Msrs.u64Cr0Fixed1, g_HmMsrs.u.vmx.u64Cr0Fixed1, RT_NOTHING);
     788        uCr0Mask = (uint32_t)~CTX_EXPR(pVM->hm.s.vmx.MsrsForRing3.u64Cr0Fixed1, g_HmMsrs.u.vmx.u64Cr0Fixed1, RT_NOTHING);
    789789        if ((pCtx->cr0 & uCr0Mask) != 0)
    790790            return false;
    791791
    792792        /* If bit N is set in cr4_fixed0, then it must be set in the guest's cr4. */
    793         uCr0Mask  = (uint32_t)CTX_EXPR(pVM->hm.s.vmx.Msrs.u64Cr4Fixed0, g_HmMsrs.u.vmx.u64Cr4Fixed0, RT_NOTHING);
     793        uCr0Mask  = (uint32_t)CTX_EXPR(pVM->hm.s.vmx.MsrsForRing3.u64Cr4Fixed0, g_HmMsrs.u.vmx.u64Cr4Fixed0, RT_NOTHING);
    794794        uCr0Mask &= ~X86_CR4_VMXE;
    795795        if ((pCtx->cr4 & uCr0Mask) != uCr0Mask)
     
    797797
    798798        /* If bit N is cleared in cr4_fixed1, then it must be zero in the guest's cr4. */
    799         uCr0Mask = (uint32_t)~CTX_EXPR(pVM->hm.s.vmx.Msrs.u64Cr4Fixed1, g_HmMsrs.u.vmx.u64Cr4Fixed1, RT_NOTHING);
     799        uCr0Mask = (uint32_t)~CTX_EXPR(pVM->hm.s.vmx.MsrsForRing3.u64Cr4Fixed1, g_HmMsrs.u.vmx.u64Cr4Fixed1, RT_NOTHING);
    800800        if ((pCtx->cr4 & uCr0Mask) != 0)
    801801            return false;
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