Index: /trunk/src/VBox/VMM/VMMAll/PGMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PGMAll.cpp	(revision 17194)
+++ /trunk/src/VBox/VMM/VMMAll/PGMAll.cpp	(revision 17195)
@@ -902,6 +902,20 @@
             if (CPUMGetGuestCR4(pVM) & X86_CR4_PAE)
             {
-                GCPdPt  = pGstPdpe->u & X86_PDPE_PG_MASK;
-                enmKind = PGMPOOLKIND_PAE_PD_FOR_PAE_PD;
+                if (!pGstPdpe->n.u1Present)
+                {
+                    /* PD not present; guest must reload CR3 to change it.
+                     * No need to monitor anything in this case.
+                     */
+                    Assert(!HWACCMIsEnabled(pVM));
+
+                    GCPdPt  = pGstPdpe->u & X86_PDPE_PG_MASK;
+                    enmKind = PGMPOOLKIND_PAE_PD_PHYS;
+                    pGstPdpe->n.u1Present = 1;
+                }
+                else
+                {
+                    GCPdPt  = pGstPdpe->u & X86_PDPE_PG_MASK;
+                    enmKind = PGMPOOLKIND_PAE_PD_FOR_PAE_PD;
+                }
             }
             else
Index: /trunk/src/VBox/VMM/VMMAll/PGMAllMap.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PGMAllMap.cpp	(revision 17194)
+++ /trunk/src/VBox/VMM/VMMAll/PGMAllMap.cpp	(revision 17195)
@@ -280,5 +280,5 @@
                     {
                         /* Fake PDPT entry; access control handled on the page table level, so allow everything. */
-                        GstPdpe.u  = X86_PDPE_P;   /* rw/us are reserved for PAE pdpte's; accessed bit causes invalid VT-x guest state errors */
+                        GstPdpe.u = X86_PDPE_P;   /* rw/us are reserved for PAE pdpte's; accessed bit causes invalid VT-x guest state errors */
                     }
                     else
@@ -289,5 +289,5 @@
                             GstPdpe = *pGstPdpe;
                         else
-                            GstPdpe.u  = X86_PDPE_P;   /* rw/us are reserved for PAE pdpte's; accessed bit causes invalid VT-x guest state errors */
+                            GstPdpe.u = X86_PDPE_P;   /* rw/us are reserved for PAE pdpte's; accessed bit causes invalid VT-x guest state errors */
                     }
                     int rc = pgmShwSyncPaePDPtr(pVM, (iPdPt << X86_PDPT_SHIFT), &GstPdpe, &pShwPaePd);
