VirtualBox

Changeset 49852 in vbox for trunk


Ignore:
Timestamp:
Dec 9, 2013 6:09:21 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
91204
Message:

VMM/HMVMXR0: Add guest-state checks for PAE PDPTEs.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/hm_vmx.h

    r49774 r49852  
    426426/** CS.Attr.DPL invalid. */
    427427#define VMX_IGS_CS_ATTR_DPL_INVALID                             121
     428/** PAE PDPTE reserved bits not set to 0. */
     429#define VMX_IGS_PAE_PDPTE_RESERVED                              123
    428430/** @} */
    429431
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r49776 r49852  
    91879187        }
    91889188
    9189         /** @todo Checks on Guest Page-Directory-Pointer-Table Entries.  */
     9189        /** @todo Checks on Guest Page-Directory-Pointer-Table Entries when guest is
     9190         *        in IA-32e Paging Mode (AMD64 Paging). */
     9191        if (   pVM->hm.s.fNestedPaging
     9192            && CPUMIsGuestInPAEModeEx(pCtx))
     9193        {
     9194            rc = VMXReadVmcs64(VMX_VMCS64_GUEST_PDPTE0_FULL, &u64Val);
     9195            AssertRCBreak(rc);
     9196            HMVMX_CHECK_BREAK(!(u64Val & X86_PDPE_PAE_MBZ_MASK), VMX_IGS_PAE_PDPTE_RESERVED);
     9197
     9198            rc = VMXReadVmcs64(VMX_VMCS64_GUEST_PDPTE1_FULL, &u64Val);
     9199            AssertRCBreak(rc);
     9200            HMVMX_CHECK_BREAK(!(u64Val & X86_PDPE_PAE_MBZ_MASK), VMX_IGS_PAE_PDPTE_RESERVED);
     9201
     9202            rc = VMXReadVmcs64(VMX_VMCS64_GUEST_PDPTE2_FULL, &u64Val);
     9203            AssertRCBreak(rc);
     9204            HMVMX_CHECK_BREAK(!(u64Val & X86_PDPE_PAE_MBZ_MASK), VMX_IGS_PAE_PDPTE_RESERVED);
     9205
     9206            rc = VMXReadVmcs64(VMX_VMCS64_GUEST_PDPTE3_FULL, &u64Val);
     9207            AssertRCBreak(rc);
     9208            HMVMX_CHECK_BREAK(!(u64Val & X86_PDPE_PAE_MBZ_MASK), VMX_IGS_PAE_PDPTE_RESERVED);
     9209        }
    91909210
    91919211        /* Shouldn't happen but distinguish it from AssertRCBreak() errors. */
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