Index: /trunk/include/VBox/vmm/vm.h
===================================================================
--- /trunk/include/VBox/vmm/vm.h	(revision 87776)
+++ /trunk/include/VBox/vmm/vm.h	(revision 87777)
@@ -1301,5 +1301,5 @@
         struct TRPM s;
 #endif
-        uint8_t     padding[5248];      /* multiple of 64 */
+        uint8_t     padding[2048];      /* multiple of 64 */
     } trpm;
 
@@ -1463,5 +1463,5 @@
 
     /** Padding for aligning the structure size on a page boundrary. */
-    uint8_t         abAlignment2[4568 - sizeof(PVMCPUR3) * VMM_MAX_CPU_COUNT];
+    uint8_t         abAlignment2[3672 - sizeof(PVMCPUR3) * VMM_MAX_CPU_COUNT];
 
     /* ---- end small stuff ---- */
Index: /trunk/include/VBox/vmm/vm.mac
===================================================================
--- /trunk/include/VBox/vmm/vm.mac	(revision 87776)
+++ /trunk/include/VBox/vmm/vm.mac	(revision 87777)
@@ -124,5 +124,5 @@
     .pgm                    resb 21120
     .hm                     resb 5504
-    .trpm                   resb 5248
+    .trpm                   resb 2048
     .selm                   resb 768
     .mm                     resb 192
@@ -140,7 +140,5 @@
     .R0Stats                resb 64
 
-    .abAlignment2           resb 4568 - RTR0PTR_CB * VMM_MAX_CPU_COUNT
-
-    alignb RTR0PTR_CB * VMM_MAX_CPU_COUNT ; ASSUMES VMM_MAX_CPU_COUNT is a power of two.
+    times ((($ + VMM_MAX_CPU_COUNT * RTR0PTR_CB + 4095) & ~4095) - ($ + VMM_MAX_CPU_COUNT * RTR0PTR_CB)) resb 1
     .apCpusR3               RTR3PTR_RES VMM_MAX_CPU_COUNT
     alignb 4096
Index: /trunk/src/VBox/VMM/VMMR3/TRPM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/TRPM.cpp	(revision 87776)
+++ /trunk/src/VBox/VMM/VMMR3/TRPM.cpp	(revision 87777)
@@ -162,11 +162,7 @@
      * Statistics.
      */
-#ifdef VBOX_WITH_STATISTICS
-    rc = MMHyperAlloc(pVM, sizeof(STAMCOUNTER) * 256, sizeof(STAMCOUNTER), MM_TAG_TRPM, (void **)&pVM->trpm.s.paStatForwardedIRQR3);
-    AssertRCReturn(rc, rc);
     for (unsigned i = 0; i < 256; i++)
-        STAMR3RegisterF(pVM, &pVM->trpm.s.paStatForwardedIRQR3[i], STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES, "Forwarded interrupts.",
-                        i < 0x20 ? "/TRPM/ForwardRaw/TRAP/%02X" : "/TRPM/ForwardRaw/IRQ/%02X", i);
-#endif
+        STAMR3RegisterF(pVM, &pVM->trpm.s.aStatForwardedIRQ[i], STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,
+                        "Forwarded interrupts.", i < 0x20 ? "/TRPM/ForwardRaw/TRAP/%02X" : "/TRPM/ForwardRaw/IRQ/%02X", i);
 
     return 0;
@@ -399,5 +395,5 @@
                 return VBOXSTRICTRC_TODO(rcStrict);
         }
-        STAM_COUNTER_INC(&pVM->trpm.s.paStatForwardedIRQR3[u8Interrupt]);
+        STAM_COUNTER_INC(&pVM->trpm.s.aStatForwardedIRQ[u8Interrupt]);
     }
     else
Index: /trunk/src/VBox/VMM/include/TRPMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/include/TRPMInternal.h	(revision 87776)
+++ /trunk/src/VBox/VMM/include/TRPMInternal.h	(revision 87777)
@@ -45,9 +45,9 @@
 {
 #ifdef VBOX_WITH_STATISTICS
-    /** Statistics for interrupt handlers (allocated on the hypervisor heap) - R3
-     * pointer. */
-    R3PTRTYPE(PSTAMCOUNTER) paStatForwardedIRQR3;
+    /** Statistics for interrupt handlers. */
+    STAMCOUNTER             aStatForwardedIRQ[256];
+#else
+    uint64_t                uWhatever;
 #endif
-    uint64_t                u64Dummy;
 } TRPM;
 
