Index: /trunk/src/VBox/VMM/VMMR3/PGM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PGM.cpp	(revision 60400)
+++ /trunk/src/VBox/VMM/VMMR3/PGM.cpp	(revision 60401)
@@ -1363,4 +1363,9 @@
 
     rc = CFGMR3QueryBoolDef(CFGMR3GetRoot(pVM), "PageFusionAllowed", &pVM->pgm.s.fPageFusionAllowed, false);
+    AssertLogRelRCReturn(rc, rc);
+
+    /** @cfgm{/PGM/ZeroRamPagesOnReset, boolean, true}
+     * Whether to clear RAM pages on (hard) reset. */
+    rc = CFGMR3QueryBoolDef(pCfgPGM, "ZeroRamPagesOnReset", &pVM->pgm.s.fZeroRamPagesOnReset, true);
     AssertLogRelRCReturn(rc, rc);
 
Index: /trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp	(revision 60400)
+++ /trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp	(revision 60401)
@@ -1948,9 +1948,6 @@
         AssertMsg(((RTGCPHYS)iPage << PAGE_SHIFT) == pRam->cb, ("%RGp %RGp\n", (RTGCPHYS)iPage << PAGE_SHIFT, pRam->cb));
 
-#ifndef NO_RAM_RESET
-        if (!pVM->pgm.s.fRamPreAlloc)
-#else
-        if (0)
-#endif
+        if (   !pVM->pgm.s.fRamPreAlloc
+            && pVM->pgm.s.fZeroRamPagesOnReset)
         {
             /* Replace all RAM pages by ZERO pages. */
@@ -2025,13 +2022,12 @@
 
                             case PGM_PAGE_STATE_ALLOCATED:
-                            {
-                                void *pvPage;
-                                rc = pgmPhysPageMap(pVM, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), &pvPage);
-                                AssertLogRelRCReturn(rc, rc);
-#ifndef NO_RAM_RESET
-                                ASMMemZeroPage(pvPage);
-#endif
+                                if (pVM->pgm.s.fZeroRamPagesOnReset)
+                                {
+                                    void *pvPage;
+                                    rc = pgmPhysPageMap(pVM, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), &pvPage);
+                                    AssertLogRelRCReturn(rc, rc);
+                                    ASMMemZeroPage(pvPage);
+                                }
                                 break;
-                            }
                         }
                         break;
@@ -3577,5 +3573,5 @@
          */
 #ifndef VBOX_STRICT
-        if (pVM->pgm.s.fRestoreRomPagesAtReset)
+        if (pVM->pgm.s.fRestoreRomPagesOnReset)
 #endif
         {
@@ -3593,5 +3589,5 @@
                 if (memcmp(pvDstPage, pbSrcPage, RT_MIN(cbSrcLeft, PAGE_SIZE)))
                 {
-                    if (pVM->pgm.s.fRestoreRomPagesAtReset)
+                    if (pVM->pgm.s.fRestoreRomPagesOnReset)
                     {
                         void *pvDstPageW;
@@ -3613,5 +3609,5 @@
     /* Clear the ROM restore flag now as we only need to do this once after
        loading saved state. */
-    pVM->pgm.s.fRestoreRomPagesAtReset = false;
+    pVM->pgm.s.fRestoreRomPagesOnReset = false;
 
     return VINF_SUCCESS;
Index: /trunk/src/VBox/VMM/VMMR3/PGMSavedState.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PGMSavedState.cpp	(revision 60400)
+++ /trunk/src/VBox/VMM/VMMR3/PGMSavedState.cpp	(revision 60401)
@@ -3301,5 +3301,5 @@
 static DECLCALLBACK(int) pgmR3LoadDone(PVM pVM, PSSMHANDLE pSSM)
 {
-    pVM->pgm.s.fRestoreRomPagesAtReset = true;
+    pVM->pgm.s.fRestoreRomPagesOnReset = true;
     NOREF(pSSM);
     return VINF_SUCCESS;
Index: /trunk/src/VBox/VMM/include/PGMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/include/PGMInternal.h	(revision 60400)
+++ /trunk/src/VBox/VMM/include/PGMInternal.h	(revision 60401)
@@ -3249,5 +3249,9 @@
      * enables the VM to start using an updated ROM without requiring powering
      * down the VM, just rebooting or resetting it. */
-    bool                            fRestoreRomPagesAtReset;
+    bool                            fRestoreRomPagesOnReset;
+    /** Whether to automatically clear all RAM pages on reset. */
+    bool                            fZeroRamPagesOnReset;
+    /** Alignment padding. */
+    bool                            afAlignment3[7];
 
     /** Indicates that PGMR3FinalizeMappings has been called and that further
