Index: /trunk/src/VBox/VMM/Makefile.kmk
===================================================================
--- /trunk/src/VBox/VMM/Makefile.kmk	(revision 30798)
+++ /trunk/src/VBox/VMM/Makefile.kmk	(revision 30799)
@@ -24,4 +24,23 @@
 
 #
+# Globals
+#
+
+## DEFS variable that is picked up by all three VMM targets.
+# Can be prepended to by setting it in LocalConfig.kmk
+VMM_COMMON_DEFS ?=
+ifdef VBOX_WITH_RAW_MODE
+ VMM_COMMON_DEFS += VBOX_WITH_RAW_MODE
+endif
+ifdef VBOX_WITH_MULTI_CORE
+ VMM_COMMON_DEFS += VBOX_WITH_MULTI_CORE
+endif
+ifdef VBOX_WITH_R0_LOGGING
+ VMM_COMMON_DEFS += VBOX_WITH_R0_LOGGING
+endif
+# VMM_COMMON_DEFS += VBOX_WITH_NS_ACCOUNTING_STATS
+
+
+#
 # VMMR3.dll
 #
@@ -30,15 +49,9 @@
 VMMR3_TEMPLATE  = VBoxR3Dll
 
-VMMR3_DEFS      = IN_VMM_R3 IN_DIS IN_GMM_R3 IN_DBG
+VMMR3_DEFS      = IN_VMM_R3 IN_DIS IN_GMM_R3 IN_DBG $(VMM_COMMON_DEFS)
 ## @todo eliminate IN_GMM_R3
 ifdef VBOX_WITH_PREALLOC_RAM_BY_DEFAULT
  VMMR3_DEFS    += VBOX_WITH_PREALLOC_RAM_BY_DEFAULT
 endif
-ifdef VBOX_WITH_R0_LOGGING
- VMMR3_DEFS    += VBOX_WITH_R0_LOGGING
-endif
-ifdef VBOX_WITH_MULTI_CORE
- VMMR3_DEFS    += VBOX_WITH_MULTI_CORE
-endif
 ifdef VBOX_WITH_VUSB
  VMMR3_DEFS    += VBOX_WITH_USB
@@ -46,10 +59,4 @@
 ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
  VMMR3_DEFS    += VBOX_WITH_PDM_ASYNC_COMPLETION
-endif
-ifdef VBOX_WITH_LIVE_MIGRATION
- VMMR3_DEFS    += VBOX_WITH_LIVE_MIGRATION
-endif
-ifdef VBOX_WITH_RAW_MODE
- VMMR3_DEFS    += VBOX_WITH_RAW_MODE
 endif
 VMMR3_DEFS.darwin = VMM_R0_SWITCH_STACK
@@ -315,11 +322,5 @@
  VMMGC_SYSSUFF   = .gc
 
- VMMGC_DEFS      = IN_VMM_RC IN_RT_RC IN_DIS DIS_CORE_ONLY VBOX_WITH_RAW_MODE
- ifdef VBOX_WITH_R0_LOGGING
-  VMMGC_DEFS    += VBOX_WITH_R0_LOGGING
- endif
- ifdef VBOX_WITH_MULTI_CORE
-  VMMGC_DEFS    += VBOX_WITH_MULTI_CORE
- endif
+ VMMGC_DEFS      = IN_VMM_RC IN_RT_RC IN_DIS DIS_CORE_ONLY VBOX_WITH_RAW_MODE $(VMM_COMMON_DEFS)
  ifeq ($(KBUILD_TARGET_ARCH),x86)
   VMMGC_DEFS.darwin = VMM_R0_SWITCH_STACK
@@ -415,17 +416,9 @@
 VMMR0_SYSSUFF   = .r0
 
-VMMR0_DEFS      = IN_VMM_R0 IN_RT_R0 IN_DIS DIS_CORE_ONLY IN_GVMM_R0 IN_GMM_R0 IN_INTNET_R0 RTASSERT_HAVE_SHOULD_PANIC
+VMMR0_DEFS      = IN_VMM_R0 IN_RT_R0 IN_DIS DIS_CORE_ONLY IN_GVMM_R0 IN_GMM_R0 IN_INTNET_R0 \
+	$(VMM_COMMON_DEFS) RTASSERT_HAVE_SHOULD_PANIC
 ## @todo eliminate IN_GVMM_R0 IN_GMM_R0
-ifdef VBOX_WITH_R0_LOGGING
- VMMR0_DEFS    += VBOX_WITH_R0_LOGGING
-endif
 ifdef VBOX_WITH_VMMR0_DISABLE_PREEMPTION
  VMMR0_DEFS    += VBOX_WITH_VMMR0_DISABLE_PREEMPTION
-endif
-ifdef VBOX_WITH_MULTI_CORE
- VMMR0_DEFS    += VBOX_WITH_MULTI_CORE
-endif
-ifdef VBOX_WITH_RAW_MODE
- VMMR0_DEFS    += VBOX_WITH_RAW_MODE
 endif
 VMMR0_DEFS.darwin = VMM_R0_SWITCH_STACK
Index: /trunk/src/VBox/VMM/TM.cpp
===================================================================
--- /trunk/src/VBox/VMM/TM.cpp	(revision 30798)
+++ /trunk/src/VBox/VMM/TM.cpp	(revision 30799)
@@ -634,5 +634,5 @@
         STAMR3RegisterF(pVM, &pVM->aCpus[i].tm.s.offTSCRawSrc,          STAMTYPE_U64, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS, "TSC offset relative the raw source",           "/TM/TSC/offCPU%u", i);
 #ifndef VBOX_WITHOUT_NS_ACCOUNTING
-# ifdef VBOX_WITH_STATISTICS
+# if defined(VBOX_WITH_STATISTICS) || defined(VBOX_WITH_NS_ACCOUNTING_STATS)
         STAMR3RegisterF(pVM, &pVM->aCpus[i].tm.s.StatNsTotal,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_NS,               "Resettable: Total CPU run time.",   "/TM/CPU/%02u", i);
         STAMR3RegisterF(pVM, &pVM->aCpus[i].tm.s.StatNsExecuting,   STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_NS_PER_OCCURENCE, "Resettable: Time spent executing guest code.",    "/TM/CPU/%02u/PrfExecuting", i);
Index: /trunk/src/VBox/VMM/TMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/TMInternal.h	(revision 30798)
+++ /trunk/src/VBox/VMM/TMInternal.h	(revision 30799)
@@ -630,5 +630,5 @@
     /** The number of guest execution runs. */
     uint64_t                    cPeriodsExecuting;
-# ifdef VBOX_WITH_STATISTICS
+# if defined(VBOX_WITH_STATISTICS) || defined(VBOX_WITH_NS_ACCOUNTING_STATS)
     /** Resettable version of cNsTotal. */
     STAMCOUNTER                 StatNsTotal;
Index: /trunk/src/VBox/VMM/VMMAll/TMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/TMAll.cpp	(revision 30798)
+++ /trunk/src/VBox/VMM/VMMAll/TMAll.cpp	(revision 30799)
@@ -199,10 +199,10 @@
     uint64_t const cNsOtherNew       = cNsTotalNew - cNsExecutingNew - pVCpu->tm.s.cNsHalted;
 
-    STAM_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsExecuting, cNsExecutingDelta);
-    STAM_COUNTER_ADD(&pVCpu->tm.s.StatNsTotal, cNsTotalNew - pVCpu->tm.s.cNsTotal);
-# ifdef VBOX_WITH_STATISTICS
+# if defined(VBOX_WITH_STATISTICS) || defined(VBOX_WITH_NS_ACCOUNTING_STATS)
+    STAM_REL_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsExecuting, cNsExecutingDelta);
+    STAM_REL_COUNTER_ADD(&pVCpu->tm.s.StatNsTotal, cNsTotalNew - pVCpu->tm.s.cNsTotal);
     int64_t  const cNsOtherNewDelta  = cNsOtherNew - pVCpu->tm.s.cNsOther;
     if (cNsOtherNewDelta > 0)
-        STAM_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsOther, cNsOtherNewDelta); /* (the period before execution) */
+        STAM_REL_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsOther, cNsOtherNewDelta); /* (the period before execution) */
 # endif
 
@@ -266,10 +266,10 @@
     uint64_t const cNsOtherNew    = cNsTotalNew - pVCpu->tm.s.cNsExecuting - cNsHaltedNew;
 
-    STAM_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsHalted, cNsHaltedDelta);
-    STAM_COUNTER_ADD(&pVCpu->tm.s.StatNsTotal, cNsTotalNew - pVCpu->tm.s.cNsTotal);
-# ifdef VBOX_WITH_STATISTICS
+# if defined(VBOX_WITH_STATISTICS) || defined(VBOX_WITH_NS_ACCOUNTING_STATS)
+    STAM_REL_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsHalted, cNsHaltedDelta);
+    STAM_REL_COUNTER_ADD(&pVCpu->tm.s.StatNsTotal, cNsTotalNew - pVCpu->tm.s.cNsTotal);
     int64_t  const cNsOtherNewDelta  = cNsOtherNew - pVCpu->tm.s.cNsOther;
     if (cNsOtherNewDelta > 0)
-        STAM_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsOther, cNsOtherNewDelta); /* (the period before halting) */
+        STAM_REL_PROFILE_ADD_PERIOD(&pVCpu->tm.s.StatNsOther, cNsOtherNewDelta); /* (the period before halting) */
 # endif
 
