Index: /trunk/src/VBox/VMM/PGMHandler.cpp
===================================================================
--- /trunk/src/VBox/VMM/PGMHandler.cpp	(revision 27544)
+++ /trunk/src/VBox/VMM/PGMHandler.cpp	(revision 27545)
@@ -100,4 +100,8 @@
     if (!pszModR0)
         pszModR0 = VMMR0_MAIN_MODULE_NAME;
+    if (!pszHandlerR0)
+        pszHandlerR0 = "pgmPhysHandlerRedirectToHC";
+    if (!pszHandlerRC)
+        pszHandlerRC = "pgmPhysHandlerRedirectToHC";
     AssertPtrReturn(pfnHandlerR3, VERR_INVALID_POINTER);
     AssertPtrReturn(pszHandlerR0, VERR_INVALID_POINTER);
Index: /trunk/src/VBox/VMM/PGMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/PGMInternal.h	(revision 27544)
+++ /trunk/src/VBox/VMM/PGMInternal.h	(revision 27545)
@@ -3364,4 +3364,5 @@
 int             pgmPhysGCPhys2CCPtrInternal(PVM pVM, PPGMPAGE pPage, RTGCPHYS GCPhys, void **ppv);
 int             pgmPhysGCPhys2CCPtrInternalReadOnly(PVM pVM, PPGMPAGE pPage, RTGCPHYS GCPhys, const void **ppv);
+VMMDECL(int)    pgmPhysHandlerRedirectToHC(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser);
 VMMDECL(int)    pgmPhysRomWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser);
 #ifdef IN_RING3
Index: /trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp	(revision 27544)
+++ /trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp	(revision 27545)
@@ -53,4 +53,22 @@
 
 #ifndef IN_RING3
+
+/**
+ * \#PF Handler callback for physical memory accesses without a RC/R0 handler.
+ * This simply pushes everything to the HC handler.
+ *
+ * @returns VBox status code (appropritate for trap handling and GC return).
+ * @param   pVM         VM Handle.
+ * @param   uErrorCode  CPU Error code.
+ * @param   pRegFrame   Trap register frame.
+ * @param   pvFault     The fault address (cr2).
+ * @param   GCPhysFault The GC physical address corresponding to pvFault.
+ * @param   pvUser      User argument.
+ */
+VMMDECL(int) pgmPhysHandlerRedirectToHC(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser)
+{
+    return (uErrorCode & X86_TRAP_PF_RW) ? VINF_IOM_HC_MMIO_WRITE : VINF_IOM_HC_MMIO_READ;
+}
+
 
 /**
