Index: /trunk/src/VBox/VMM/VMMAll/TMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/TMAll.cpp	(revision 87773)
+++ /trunk/src/VBox/VMM/VMMAll/TMAll.cpp	(revision 87774)
@@ -450,4 +450,5 @@
  * Links a timer into the active list of a timer queue.
  *
+ * @param   pVM             The cross context VM structure.
  * @param   pQueue          The queue.
  * @param   pTimer          The timer.
@@ -456,9 +457,10 @@
  * @remarks Called while owning the relevant queue lock.
  */
-DECL_FORCE_INLINE(void) tmTimerQueueLinkActive(PTMTIMERQUEUE pQueue, PTMTIMER pTimer, uint64_t u64Expire)
+DECL_FORCE_INLINE(void) tmTimerQueueLinkActive(PVMCC pVM, PTMTIMERQUEUE pQueue, PTMTIMER pTimer, uint64_t u64Expire)
 {
     Assert(!pTimer->offNext);
     Assert(!pTimer->offPrev);
     Assert(pTimer->enmState == TMTIMERSTATE_ACTIVE || pTimer->enmClock != TMCLOCK_VIRTUAL_SYNC); /* (active is not a stable state) */
+    RT_NOREF(pVM);
 
     PTMTIMER pCur = TMTIMER_GET_HEAD(pQueue);
@@ -478,5 +480,5 @@
                     TMTIMER_SET_HEAD(pQueue, pTimer);
                     ASMAtomicWriteU64(&pQueue->u64Expire, u64Expire);
-                    DBGFTRACE_U64_TAG2(pTimer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive head", pTimer->szName);
+                    DBGFTRACE_U64_TAG2(pVM, u64Expire, "tmTimerQueueLinkActive head", pTimer->szName);
                 }
                 TMTIMER_SET_PREV(pCur, pTimer);
@@ -487,5 +489,5 @@
                 TMTIMER_SET_NEXT(pCur, pTimer);
                 TMTIMER_SET_PREV(pTimer, pCur);
-                DBGFTRACE_U64_TAG2(pTimer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive tail", pTimer->szName);
+                DBGFTRACE_U64_TAG2(pVM, u64Expire, "tmTimerQueueLinkActive tail", pTimer->szName);
                 return;
             }
@@ -496,5 +498,5 @@
         TMTIMER_SET_HEAD(pQueue, pTimer);
         ASMAtomicWriteU64(&pQueue->u64Expire, u64Expire);
-        DBGFTRACE_U64_TAG2(pTimer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive empty", pTimer->szName);
+        DBGFTRACE_U64_TAG2(pVM, u64Expire, "tmTimerQueueLinkActive empty", pTimer->szName);
     }
 }
@@ -531,5 +533,5 @@
                 if (RT_UNLIKELY(!tmTimerTry(pTimer, TMTIMERSTATE_PENDING_SCHEDULE, TMTIMERSTATE_PENDING_RESCHEDULE)))
                     break; /* retry */
-                tmTimerQueueUnlinkActive(pQueue, pTimer);
+                tmTimerQueueUnlinkActive(pVM, pQueue, pTimer);
                 RT_FALL_THRU();
 
@@ -541,5 +543,5 @@
                 if (RT_UNLIKELY(!tmTimerTry(pTimer, TMTIMERSTATE_ACTIVE, TMTIMERSTATE_PENDING_SCHEDULE)))
                     break; /* retry */
-                tmTimerQueueLinkActive(pQueue, pTimer, pTimer->u64Expire);
+                tmTimerQueueLinkActive(pVM, pQueue, pTimer, pTimer->u64Expire);
                 return;
 
@@ -550,5 +552,5 @@
                 if (RT_UNLIKELY(!tmTimerTry(pTimer, TMTIMERSTATE_PENDING_STOP_SCHEDULE, TMTIMERSTATE_PENDING_STOP)))
                     break; /* retry */
-                tmTimerQueueUnlinkActive(pQueue, pTimer);
+                tmTimerQueueUnlinkActive(pVM, pQueue, pTimer);
                 RT_FALL_THRU();
 
@@ -1167,5 +1169,5 @@
  * @param   u64Expire       The new expire time.
  */
-static int tmTimerSetOptimizedStart(PVM pVM, PTMTIMER pTimer, uint64_t u64Expire)
+static int tmTimerSetOptimizedStart(PVMCC pVM, PTMTIMER pTimer, uint64_t u64Expire)
 {
     Assert(!pTimer->offPrev);
@@ -1191,5 +1193,5 @@
      * Link the timer into the active list.
      */
-    tmTimerQueueLinkActive(&pVM->tm.s.CTX_SUFF(paTimerQueues)[enmClock], pTimer, u64Expire);
+    tmTimerQueueLinkActive(pVM, &pVM->tm.s.CTX_SUFF(paTimerQueues)[enmClock], pTimer, u64Expire);
 
     STAM_COUNTER_INC(&pVM->tm.s.StatTimerSetOpt);
@@ -1233,5 +1235,5 @@
             pTimer->u64Expire = u64Expire;
             TM_SET_STATE(pTimer, TMTIMERSTATE_ACTIVE);
-            tmTimerQueueLinkActive(pQueue, pTimer, u64Expire);
+            tmTimerQueueLinkActive(pVM, pQueue, pTimer, u64Expire);
             rc = VINF_SUCCESS;
             break;
@@ -1239,7 +1241,7 @@
         case TMTIMERSTATE_ACTIVE:
             STAM_COUNTER_INC(&pVM->tm.s.StatTimerSetVsStActive);
-            tmTimerQueueUnlinkActive(pQueue, pTimer);
+            tmTimerQueueUnlinkActive(pVM, pQueue, pTimer);
             pTimer->u64Expire = u64Expire;
-            tmTimerQueueLinkActive(pQueue, pTimer, u64Expire);
+            tmTimerQueueLinkActive(pVM, pQueue, pTimer, u64Expire);
             rc = VINF_SUCCESS;
             break;
@@ -1492,5 +1494,5 @@
      */
     DBGFTRACE_U64_TAG2(pVM, u64Expire, "tmTimerSetRelativeOptimizedStart", pTimer->szName);
-    tmTimerQueueLinkActive(&pVM->tm.s.CTX_SUFF(paTimerQueues)[enmClock], pTimer, u64Expire);
+    tmTimerQueueLinkActive(pVM, &pVM->tm.s.CTX_SUFF(paTimerQueues)[enmClock], pTimer, u64Expire);
 
     STAM_COUNTER_INC(&pVM->tm.s.StatTimerSetRelativeOpt);
@@ -1540,5 +1542,5 @@
             pTimer->u64Expire = u64Expire;
             TM_SET_STATE(pTimer, TMTIMERSTATE_ACTIVE);
-            tmTimerQueueLinkActive(pQueue, pTimer, u64Expire);
+            tmTimerQueueLinkActive(pVM, pQueue, pTimer, u64Expire);
             rc = VINF_SUCCESS;
             break;
@@ -1546,7 +1548,7 @@
         case TMTIMERSTATE_ACTIVE:
             STAM_COUNTER_INC(&pVM->tm.s.StatTimerSetRelativeVsStActive);
-            tmTimerQueueUnlinkActive(pQueue, pTimer);
+            tmTimerQueueUnlinkActive(pVM, pQueue, pTimer);
             pTimer->u64Expire = u64Expire;
-            tmTimerQueueLinkActive(pQueue, pTimer, u64Expire);
+            tmTimerQueueLinkActive(pVM, pQueue, pTimer, u64Expire);
             rc = VINF_SUCCESS;
             break;
@@ -1882,5 +1884,5 @@
     {
         case TMTIMERSTATE_ACTIVE:
-            tmTimerQueueUnlinkActive(pQueue, pTimer);
+            tmTimerQueueUnlinkActive(pVM, pQueue, pTimer);
             TM_SET_STATE(pTimer, TMTIMERSTATE_STOPPED);
             rc = VINF_SUCCESS;
Index: /trunk/src/VBox/VMM/VMMR3/TM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/TM.cpp	(revision 87773)
+++ /trunk/src/VBox/VMM/VMMR3/TM.cpp	(revision 87774)
@@ -2478,5 +2478,5 @@
 
         /* Unlink it, change the state and do the callout. */
-        tmTimerQueueUnlinkActive(pQueue, pTimer);
+        tmTimerQueueUnlinkActive(pVM, pQueue, pTimer);
         TM_SET_STATE(pTimer, TMTIMERSTATE_EXPIRED_DELIVER);
         STAM_PROFILE_START(&pTimer->StatTimer, PrfTimer);
Index: /trunk/src/VBox/VMM/include/TMInline.h
===================================================================
--- /trunk/src/VBox/VMM/include/TMInline.h	(revision 87773)
+++ /trunk/src/VBox/VMM/include/TMInline.h	(revision 87774)
@@ -26,4 +26,5 @@
  * Used to unlink a timer from the active list.
  *
+ * @param   pVM         The cross context VM structure.
  * @param   pQueue      The timer queue.
  * @param   pTimer      The timer that needs linking.
@@ -31,5 +32,5 @@
  * @remarks Called while owning the relevant queue lock.
  */
-DECL_FORCE_INLINE(void) tmTimerQueueUnlinkActive(PTMTIMERQUEUE pQueue, PTMTIMER pTimer)
+DECL_FORCE_INLINE(void) tmTimerQueueUnlinkActive(PVMCC pVM, PTMTIMERQUEUE pQueue, PTMTIMER pTimer)
 {
 #ifdef VBOX_STRICT
@@ -39,4 +40,5 @@
            : enmState == TMTIMERSTATE_PENDING_SCHEDULE || enmState == TMTIMERSTATE_PENDING_STOP_SCHEDULE);
 #endif
+    RT_NOREF(pVM);
 
     const PTMTIMER pPrev = TMTIMER_GET_PREV(pTimer);
@@ -48,5 +50,5 @@
         TMTIMER_SET_HEAD(pQueue, pNext);
         pQueue->u64Expire = pNext ? pNext->u64Expire : INT64_MAX;
-        DBGFTRACE_U64_TAG(pTimer->CTX_SUFF(pVM), pQueue->u64Expire, "tmTimerQueueUnlinkActive");
+        DBGFTRACE_U64_TAG(pVM, pQueue->u64Expire, "tmTimerQueueUnlinkActive");
     }
     if (pNext)
