Index: /trunk/src/VBox/VMM/VMMR0/GMMR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/GMMR0.cpp	(revision 39744)
+++ /trunk/src/VBox/VMM/VMMR0/GMMR0.cpp	(revision 39745)
@@ -2505,5 +2505,5 @@
 
                 /* If the host is out of memory, take whatever we can get. */
-                if (   rc == VERR_NO_MEMORY
+                if (   (rc == VERR_NO_MEMORY || rc == VERR_NO_PHYS_MEMORY)
                     && pGMM->PrivateX.cFreePages + pGMM->Shared.cFreePages >= cPages - iPage)
                 {
Index: /trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp	(revision 39744)
+++ /trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp	(revision 39745)
@@ -4344,6 +4344,7 @@
         }
 
-        if (    rc != VERR_NO_MEMORY
-            &&  rc != VERR_LOCK_FAILED)
+        if (   rc != VERR_NO_MEMORY
+            && rc != VERR_NO_PHYS_MEMORY
+            && rc != VERR_LOCK_FAILED)
         {
             for (uint32_t i = 0; i < RT_ELEMENTS(pVM->pgm.s.aHandyPages); i++)
@@ -4373,4 +4374,5 @@
         VM_FF_SET(pVM, VM_FF_PGM_NO_MEMORY);
         if (    rc == VERR_NO_MEMORY
+            ||  rc == VERR_NO_PHYS_MEMORY
             ||  rc == VERR_LOCK_FAILED)
             rc = VINF_EM_NO_MEMORY;
Index: /trunk/src/VBox/VMM/VMMRZ/PGMRZDynMap.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMRZ/PGMRZDynMap.cpp	(revision 39744)
+++ /trunk/src/VBox/VMM/VMMRZ/PGMRZDynMap.cpp	(revision 39745)
@@ -1062,4 +1062,6 @@
         pSeg->hMemObj = NIL_RTR0MEMOBJ;
     }
+    else if (rc == VERR_NO_PAGE_MEMORY || rc == VERR_NO_PHYS_MEMORY)
+        rc = VERR_NO_MEMORY;
     RTMemFree(pSeg);
 
