Index: /trunk/include/VBox/vmm/pgm.h
===================================================================
--- /trunk/include/VBox/vmm/pgm.h	(revision 56626)
+++ /trunk/include/VBox/vmm/pgm.h	(revision 56627)
@@ -527,5 +527,8 @@
 #ifdef IN_RING3
 # define PGM_PHYS_RW_IS_SUCCESS(a_rcStrict) \
-    (   (a_rcStrict) == VINF_SUCCESS )
+    (   (a_rcStrict) == VINF_SUCCESS \
+     || (a_rcStrict) == VINF_EM_DBG_STOP \
+     || (a_rcStrict) == VINF_EM_DBG_BREAKPOINT \
+    )
 #elif defined(IN_RING0)
 # define PGM_PHYS_RW_IS_SUCCESS(a_rcStrict) \
@@ -535,4 +538,6 @@
      || (a_rcStrict) == VINF_EM_RESET \
      || (a_rcStrict) == VINF_EM_HALT \
+     || (a_rcStrict) == VINF_EM_DBG_STOP \
+     || (a_rcStrict) == VINF_EM_DBG_BREAKPOINT \
     )
 #elif defined(IN_RC)
@@ -545,4 +550,6 @@
      || (a_rcStrict) == VINF_SELM_SYNC_GDT \
      || (a_rcStrict) == VINF_EM_RAW_EMULATE_INSTR_GDT_FAULT \
+     || (a_rcStrict) == VINF_EM_DBG_STOP \
+     || (a_rcStrict) == VINF_EM_DBG_BREAKPOINT \
     )
 #endif
Index: /trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp	(revision 56626)
+++ /trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp	(revision 56627)
@@ -1246,8 +1246,13 @@
         }
         else
-        {
+# ifdef VBOX_WITH_2ND_IEM_STEP
+            *ppv = pVM->pgm.s.CTXALLSUFF(pvZeroPg);
+# else
+        {
+            /* This kind of screws up the TLB entry if accessed from a different section afterwards. */
             static uint8_t s_abPlayItSafe[0x1000*2];  /* I don't dare return the zero page at the moment. */
             *ppv = (uint8_t *)((uintptr_t)&s_abPlayItSafe[0x1000] & ~(uintptr_t)0xfff);
         }
+# endif
         *ppMap = NULL;
         return VINF_SUCCESS;
@@ -2428,6 +2433,6 @@
  * @retval  VINF_SELM_SYNC_GDT in RC only - read completed.
  *
- * @retval  VINF_EM_DBG_STOP in RC and R0.
- * @retval  VINF_EM_DBG_BREAKPOINT in RC and R0.
+ * @retval  VINF_EM_DBG_STOP in RC and R0 - read completed.
+ * @retval  VINF_EM_DBG_BREAKPOINT in RC and R0 - read completed.
  * @retval  VINF_EM_RAW_EMULATE_INSTR in RC and R0 only.
  *
@@ -3048,6 +3053,6 @@
  * @retval  VINF_SELM_SYNC_GDT in RC only - write completed.
  *
- * @retval  VINF_EM_DBG_STOP in RC and R0.
- * @retval  VINF_EM_DBG_BREAKPOINT in RC and R0.
+ * @retval  VINF_EM_DBG_STOP in RC and R0 - write completed.
+ * @retval  VINF_EM_DBG_BREAKPOINT in RC and R0 - write completed.
  * @retval  VINF_EM_RAW_EMULATE_INSTR in RC and R0 only.
  *
