Index: /trunk/src/VBox/VMM/PGMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/PGMInternal.h	(revision 19859)
+++ /trunk/src/VBox/VMM/PGMInternal.h	(revision 19860)
@@ -361,4 +361,15 @@
 #else
 # define PGM_INVL_VCPU_TLBS(pVCpu)             HWACCMFlushTLB(pVCpu)
+#endif
+
+/** @def PGM_INVL_ALL_VCPU_TLBS()
+ * Invalidates the TLBs of all VCPUs
+ */
+#ifdef IN_RC
+# define PGM_INVL_ALL_VCPU_TLBS(pVM)            ASMReloadCR3()
+#elif defined(IN_RING0)
+# define PGM_INVL_ALL_VCPU_TLBS(pVM)            HWACCMFlushAllTLBs(pVM)
+#else
+# define PGM_INVL_ALL_VCPU_TLBS(pVM)            HWACCMFlushAllTLBs(pVM)
 #endif
 
Index: /trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp	(revision 19859)
+++ /trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp	(revision 19860)
@@ -344,5 +344,4 @@
 int pgmPhysAllocPage(PVM pVM, PPGMPAGE pPage, RTGCPHYS GCPhys)
 {
-    PVMCPU pVCpu = VMMGetCpu(pVM);
     LogFlow(("pgmPhysAllocPage: %R[pgmpage] %RGp\n", pPage, GCPhys));
 
@@ -370,5 +369,5 @@
     {
         if (fFlushTLBs)
-            PGM_INVL_VCPU_TLBS(pVCpu);
+            PGM_INVL_ALL_VCPU_TLBS(pVM);
         Assert(rc2 == VERR_EM_NO_MEMORY);
         return rc2;
@@ -425,5 +424,5 @@
     if (    fFlushTLBs
         &&  rc != VINF_PGM_GCPHYS_ALIASED)
-        PGM_INVL_VCPU_TLBS(pVCpu);
+        PGM_INVL_ALL_VCPU_TLBS(pVM);
     return rc;
 }
