Index: /trunk/include/VBox/vmm/hm_vmx.h
===================================================================
--- /trunk/include/VBox/vmm/hm_vmx.h	(revision 49851)
+++ /trunk/include/VBox/vmm/hm_vmx.h	(revision 49852)
@@ -426,4 +426,6 @@
 /** CS.Attr.DPL invalid. */
 #define VMX_IGS_CS_ATTR_DPL_INVALID                             121
+/** PAE PDPTE reserved bits not set to 0. */
+#define VMX_IGS_PAE_PDPTE_RESERVED                              123
 /** @} */
 
Index: /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp	(revision 49851)
+++ /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp	(revision 49852)
@@ -9187,5 +9187,25 @@
         }
 
-        /** @todo Checks on Guest Page-Directory-Pointer-Table Entries.  */
+        /** @todo Checks on Guest Page-Directory-Pointer-Table Entries when guest is
+         *        in IA-32e Paging Mode (AMD64 Paging). */
+        if (   pVM->hm.s.fNestedPaging
+            && CPUMIsGuestInPAEModeEx(pCtx))
+        {
+            rc = VMXReadVmcs64(VMX_VMCS64_GUEST_PDPTE0_FULL, &u64Val);
+            AssertRCBreak(rc);
+            HMVMX_CHECK_BREAK(!(u64Val & X86_PDPE_PAE_MBZ_MASK), VMX_IGS_PAE_PDPTE_RESERVED);
+
+            rc = VMXReadVmcs64(VMX_VMCS64_GUEST_PDPTE1_FULL, &u64Val);
+            AssertRCBreak(rc);
+            HMVMX_CHECK_BREAK(!(u64Val & X86_PDPE_PAE_MBZ_MASK), VMX_IGS_PAE_PDPTE_RESERVED);
+
+            rc = VMXReadVmcs64(VMX_VMCS64_GUEST_PDPTE2_FULL, &u64Val);
+            AssertRCBreak(rc);
+            HMVMX_CHECK_BREAK(!(u64Val & X86_PDPE_PAE_MBZ_MASK), VMX_IGS_PAE_PDPTE_RESERVED);
+
+            rc = VMXReadVmcs64(VMX_VMCS64_GUEST_PDPTE3_FULL, &u64Val);
+            AssertRCBreak(rc);
+            HMVMX_CHECK_BREAK(!(u64Val & X86_PDPE_PAE_MBZ_MASK), VMX_IGS_PAE_PDPTE_RESERVED);
+        }
 
         /* Shouldn't happen but distinguish it from AssertRCBreak() errors. */
