Index: /trunk/include/VBox/vmm/tm.h
===================================================================
--- /trunk/include/VBox/vmm/tm.h	(revision 87772)
+++ /trunk/include/VBox/vmm/tm.h	(revision 87773)
@@ -273,11 +273,11 @@
 VMM_INT_DECL(int)       TMR3GetImportRC(PVM pVM, const char *pszSymbol, PRTRCPTR pRCPtrValue);
 VMM_INT_DECL(int)       TMR3TimerCreateDevice(PVM pVM, PPDMDEVINS pDevIns, TMCLOCK enmClock, PFNTMTIMERDEV pfnCallback,
-                                              void *pvUser, uint32_t fFlags, const char *pszDesc, PTMTIMERHANDLE phTimer);
+                                              void *pvUser, uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer);
 VMM_INT_DECL(int)       TMR3TimerCreateUsb(PVM pVM, PPDMUSBINS pUsbIns, TMCLOCK enmClock, PFNTMTIMERUSB pfnCallback,
-                                           void *pvUser, uint32_t fFlags, const char *pszDesc, PTMTIMERHANDLE phTimer);
+                                           void *pvUser, uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer);
 VMM_INT_DECL(int)       TMR3TimerCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback,
-                                              void *pvUser, uint32_t fFlags, const char *pszDesc, PTMTIMERHANDLE phTimer);
+                                              void *pvUser, uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer);
 VMMR3DECL(int)          TMR3TimerCreate(PVM pVM, TMCLOCK enmClock, PFNTMTIMERINT pfnCallback, void *pvUser, uint32_t fFlags,
-                                        const char *pszDesc, PTMTIMERHANDLE phTimer);
+                                        const char *pszName, PTMTIMERHANDLE phTimer);
 VMMR3DECL(int)          TMR3TimerDestroy(PVM pVM, TMTIMERHANDLE hTimer);
 VMM_INT_DECL(int)       TMR3TimerDestroyDevice(PVM pVM, PPDMDEVINS pDevIns);
Index: /trunk/src/VBox/Devices/Audio/DevSB16.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevSB16.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Audio/DevSB16.cpp	(revision 87773)
@@ -2430,8 +2430,8 @@
      */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, sb16TimerIRQ, pThis,
-                              TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "SB16 IRQ timer", &pThis->hTimerIRQ);
+                              TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "SB16 IRQ", &pThis->hTimerIRQ);
     AssertRCReturn(rc, rc);
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, sb16TimerIO, pThis,
-                              TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "SB16 IO timer", &pThis->hTimerIO);
+                              TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "SB16 IO", &pThis->hTimerIO);
     AssertRCReturn(rc, rc);
     pThis->cTicksTimerIOInterval = PDMDevHlpTimerGetFreq(pDevIns, pThis->hTimerIO) / uTimerHz;
Index: /trunk/src/VBox/Devices/Graphics/DevVGA.cpp
===================================================================
--- /trunk/src/VBox/Devices/Graphics/DevVGA.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Graphics/DevVGA.cpp	(revision 87773)
@@ -6784,5 +6784,5 @@
      */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_REAL, vgaR3TimerRefresh, NULL,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "VGA Refresh Timer", &pThis->hRefreshTimer);
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "VGA Refresh", &pThis->hRefreshTimer);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/Devices/Input/DevPS2K.cpp
===================================================================
--- /trunk/src/VBox/Devices/Input/DevPS2K.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Input/DevPS2K.cpp	(revision 87773)
@@ -1402,5 +1402,5 @@
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, ps2kR3ThrottleTimer, pThis,
                               TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "PS2K Throttle Timer", &pThis->hThrottleTimer);
+                              "PS2K Throttle", &pThis->hThrottleTimer);
     AssertRCReturn(rc, rc);
 
@@ -1410,5 +1410,5 @@
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, ps2kR3TypematicTimer, pThis,
                               TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "PS2K Typematic Timer", &pThis->hKbdTypematicTimer);
+                              "PS2K Typematic", &pThis->hKbdTypematicTimer);
     AssertRCReturn(rc, rc);
 
@@ -1417,5 +1417,6 @@
      */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, ps2kR3DelayTimer, pThis,
-                              TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_RING0, "PS2K Delay Timer", &pThis->hKbdDelayTimer);
+                              TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_RING0,
+                              "PS2K Delay", &pThis->hKbdDelayTimer);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/Devices/Input/DevPS2M.cpp
===================================================================
--- /trunk/src/VBox/Devices/Input/DevPS2M.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Input/DevPS2M.cpp	(revision 87773)
@@ -1086,5 +1086,5 @@
     int rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_REAL, ps2mR3ThrottleTimer, pThis,
                                   TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_NO_RING0,
-                                  "PS2M Throttle Timer", &pThis->hThrottleTimer);
+                                  "PS2M Throttle", &pThis->hThrottleTimer);
     AssertRCReturn(rc, rc);
 
@@ -1093,5 +1093,5 @@
      */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, ps2mR3DelayTimer, pThis,
-                              TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_RING0, "PS2M Delay Timer", &pThis->hDelayTimer);
+                              TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_RING0, "PS2M Delay", &pThis->hDelayTimer);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/Devices/Network/DevE1000.cpp
===================================================================
--- /trunk/src/VBox/Devices/Network/DevE1000.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Network/DevE1000.cpp	(revision 87773)
@@ -8032,6 +8032,5 @@
     /* Create Transmit Delay Timer */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, e1kR3TxDelayTimer, pThis,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "E1000 Transmit Delay Timer", &pThis->hTXDTimer);
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "E1000 Xmit Delay", &pThis->hTXDTimer);
     AssertRCReturn(rc, rc);
     rc = PDMDevHlpTimerSetCritSect(pDevIns, pThis->hTXDTimer, &pThis->csTx);
@@ -8044,6 +8043,5 @@
         /* Create Transmit Interrupt Delay Timer */
         rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, e1kR3TxIntDelayTimer, pThis,
-                                  TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                                  "E1000 Transmit Interrupt Delay Timer", &pThis->hTIDTimer);
+                                  TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "E1000 Xmit IRQ Delay", &pThis->hTIDTimer);
         AssertRCReturn(rc, rc);
 
@@ -8051,6 +8049,5 @@
         /* Create Transmit Absolute Delay Timer */
         rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, e1kR3TxAbsDelayTimer, pThis,
-                                  TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                                  "E1000 Transmit Absolute Delay Timer", &pThis->hTADTimer);
+                                  TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "E1000 Xmit Abs Delay", &pThis->hTADTimer);
         AssertRCReturn(rc, rc);
 # endif /* E1K_NO_TAD */
@@ -8061,12 +8058,10 @@
     /* Create Receive Interrupt Delay Timer */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, e1kR3RxIntDelayTimer, pThis,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "E1000 Receive Interrupt Delay Timer", &pThis->hRIDTimer);
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,  "E1000 Recv IRQ Delay", &pThis->hRIDTimer);
     AssertRCReturn(rc, rc);
 
     /* Create Receive Absolute Delay Timer */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, e1kR3RxAbsDelayTimer, pThis,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "E1000 Receive Absolute Delay Timer", &pThis->hRADTimer);
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,  "E1000 Recv Abs Delay", &pThis->hRADTimer);
     AssertRCReturn(rc, rc);
 #endif /* E1K_USE_RX_TIMERS */
@@ -8074,12 +8069,10 @@
     /* Create Late Interrupt Timer */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, e1kR3LateIntTimer, pThis,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "E1000 Late Interrupt Timer", &pThis->hIntTimer);
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,  "E1000 Late IRQ", &pThis->hIntTimer);
     AssertRCReturn(rc, rc);
 
     /* Create Link Up Timer */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, e1kR3LinkUpTimer, pThis,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "E1000 Link Up Timer", &pThis->hLUTimer);
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,  "E1000 Link Up", &pThis->hLUTimer);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/Devices/Network/DevPCNet.cpp
===================================================================
--- /trunk/src/VBox/Devices/Network/DevPCNet.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Network/DevPCNet.cpp	(revision 87773)
@@ -5329,5 +5329,5 @@
 #else
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, pcnetR3Timer, NULL, TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "PCnet Poll Timer", &pThis->hTimerPoll);
+                              "PCnet Poll", &pThis->hTimerPoll);
     AssertRCReturn(rc, rc);
     rc = PDMDevHlpTimerSetCritSect(pDevIns, pThis->hTimerPoll, &pThis->CritSect);
@@ -5338,5 +5338,5 @@
         /* Software Interrupt timer */
         rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, pcnetR3TimerSoftInt, NULL,
-                                  TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "PCnet SoftInt Timer", &pThis->hTimerSoftInt);
+                                  TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "PCnet SoftInt", &pThis->hTimerSoftInt);
         AssertRCReturn(rc, rc);
         rc = PDMDevHlpTimerSetCritSect(pDevIns, pThis->hTimerSoftInt, &pThis->CritSect);
@@ -5344,5 +5344,5 @@
     }
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, pcnetR3TimerRestore, pThis,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "PCnet Restore Timer", &pThis->hTimerRestore);
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "PCnet Restore", &pThis->hTimerRestore);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/Devices/Network/DevVirtioNet.cpp
===================================================================
--- /trunk/src/VBox/Devices/Network/DevVirtioNet.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Network/DevVirtioNet.cpp	(revision 87773)
@@ -2247,5 +2247,5 @@
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, vnetR3LinkUpTimer, NULL,
                               TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0,
-                              "VirtioNet Link Up Timer", &pThisCC->hLinkUpTimer);
+                              "VirtioNet Link Up", &pThisCC->hLinkUpTimer);
     AssertRCReturn(rc, rc);
 
@@ -2254,5 +2254,5 @@
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, vnetR3TxTimer, pThis,
                               TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0,
-                              "VirtioNet TX Delay Timer", &pThis->hTxTimer);
+                              "VirtioNet TX Delay", &pThis->hTxTimer);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/Devices/Network/DevVirtioNet_1_0.cpp
===================================================================
--- /trunk/src/VBox/Devices/Network/DevVirtioNet_1_0.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Network/DevVirtioNet_1_0.cpp	(revision 87773)
@@ -3038,5 +3038,5 @@
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, virtioNetR3LinkUpTimer, NULL,
                               TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0,
-                              "VirtioNet Link Up Timer", &pThisCC->hLinkUpTimer);
+                              "VirtioNet Link Up", &pThisCC->hLinkUpTimer);
 
     /*
Index: /trunk/src/VBox/Devices/PC/DevACPI.cpp
===================================================================
--- /trunk/src/VBox/Devices/PC/DevACPI.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/PC/DevACPI.cpp	(revision 87773)
@@ -4388,5 +4388,5 @@
      */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, acpiR3PmTimer, NULL /*pvUser*/,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "ACPI PM Timer", &pThis->hPmTimer);
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "ACPI PM", &pThis->hPmTimer);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/Devices/PC/DevPit-i8254.cpp
===================================================================
--- /trunk/src/VBox/Devices/PC/DevPit-i8254.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/PC/DevPit-i8254.cpp	(revision 87773)
@@ -1424,6 +1424,5 @@
      */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, pitR3Timer, &pThis->channels[0],
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "i8254 Programmable Interval Timer", &pThis->channels[0].hTimer);
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "i8254 PIT", &pThis->channels[0].hTimer);
     AssertRCReturn(rc, rc);
     rc = PDMDevHlpTimerSetCritSect(pDevIns, pThis->channels[0].hTimer, &pThis->CritSect);
Index: /trunk/src/VBox/Devices/PC/DevRTC.cpp
===================================================================
--- /trunk/src/VBox/Devices/PC/DevRTC.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/PC/DevRTC.cpp	(revision 87773)
@@ -1158,5 +1158,5 @@
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, rtcTimerPeriodic, pThis,
                               TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "MC146818 RTC (CMOS) - Periodic", &pThis->hPeriodicTimer);
+                              "MC146818 RTC Periodic", &pThis->hPeriodicTimer);
     AssertRCReturn(rc, rc);
 
@@ -1164,5 +1164,5 @@
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, rtcR3TimerSecond, pThis,
                               TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_RING0,
-                              "MC146818 RTC (CMOS) - Second", &pThis->hSecondTimer);
+                              "MC146818 RTC Second", &pThis->hSecondTimer);
     AssertRCReturn(rc, rc);
 
@@ -1170,5 +1170,5 @@
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, rtcR3TimerSecond2, pThis,
                               TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_NO_RING0,
-                              "MC146818 RTC (CMOS) - Second2", &pThis->hSecondTimer2);
+                              "MC146818 RTC Second2", &pThis->hSecondTimer2);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/Devices/Serial/UartCore.cpp
===================================================================
--- /trunk/src/VBox/Devices/Serial/UartCore.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Serial/UartCore.cpp	(revision 87773)
@@ -2071,5 +2071,5 @@
      */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, uartR3RcvFifoTimeoutTimer, pThisCC,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "UART Rcv FIFO Timer",
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "UART Rcv FIFO",
                               &pThis->hTimerRcvFifoTimeout);
     AssertRCReturn(rc, rc);
@@ -2082,5 +2082,5 @@
      */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, uartR3TxUnconnectedTimer, pThisCC,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "UART TX uncon. Timer",
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "UART TX unconnect",
                               &pThis->hTimerTxUnconnected);
     AssertRCReturn(rc, rc);
Index: /trunk/src/VBox/Devices/Storage/DevAHCI.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DevAHCI.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Storage/DevAHCI.cpp	(revision 87773)
@@ -5937,5 +5937,5 @@
      */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, ahciCccTimer, pThis,
-                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "AHCI CCC Timer", &pThis->hHbaCccTimer);
+                              TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0, "AHCI CCC", &pThis->hHbaCccTimer);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/Devices/Storage/DevFdc.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DevFdc.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/Storage/DevFdc.cpp	(revision 87773)
@@ -2933,5 +2933,5 @@
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, fdcTransferDelayTimer, pThis,
                               TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_NO_RING0,
-                              "FDC Transfer Delay Timer", &pThis->hXferDelayTimer);
+                              "FDC Transfer Delay", &pThis->hXferDelayTimer);
     AssertRCReturn(rc, rc);
 
@@ -2941,5 +2941,5 @@
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, fdcIrqDelayTimer, pThis,
                               TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_NO_RING0,
-                              "FDC IRQ Delay Timer", &pThis->hIrqDelayTimer);
+                              "FDC IRQ Delay", &pThis->hIrqDelayTimer);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/Devices/USB/DevOHCI.cpp
===================================================================
--- /trunk/src/VBox/Devices/USB/DevOHCI.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/USB/DevOHCI.cpp	(revision 87773)
@@ -5848,5 +5848,5 @@
     {
         int rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, ohciR3LoadReattachDevices, NULL /*pvUser*/,
-                                      TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "OHCI reattach devices on load",
+                                      TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "OHCI reattach on load",
                                       &pThisCC->pLoad->hTimer);
         if (RT_SUCCESS(rc))
Index: /trunk/src/VBox/Devices/USB/VUSBDevice.cpp
===================================================================
--- /trunk/src/VBox/Devices/USB/VUSBDevice.cpp	(revision 87772)
+++ /trunk/src/VBox/Devices/USB/VUSBDevice.cpp	(revision 87773)
@@ -1813,5 +1813,5 @@
      */
     rc = PDMUsbHlpTimerCreate(pDev->pUsbIns, TMCLOCK_VIRTUAL, vusbDevResetDoneTimer, pDev, 0 /*fFlags*/,
-                              "USB Device Reset Timer",  &pDev->hResetTimer);
+                              "USB Reset", &pDev->hResetTimer);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/ExtPacks/BusMouseSample/DevBusMouse.cpp
===================================================================
--- /trunk/src/VBox/ExtPacks/BusMouseSample/DevBusMouse.cpp	(revision 87772)
+++ /trunk/src/VBox/ExtPacks/BusMouseSample/DevBusMouse.cpp	(revision 87773)
@@ -717,5 +717,5 @@
      */
     rc = PDMDevHlpTimerCreate(pDevIns, TMCLOCK_VIRTUAL, bmsR3TimerCallback, pThis,
-                              TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "Bus Mouse Timer", &pThis->hMouseTimer);
+                              TMTIMER_FLAGS_DEFAULT_CRIT_SECT | TMTIMER_FLAGS_NO_RING0, "Bus Mouse", &pThis->hMouseTimer);
     AssertRCReturn(rc, rc);
 
Index: /trunk/src/VBox/VMM/VMMAll/TMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/TMAll.cpp	(revision 87772)
+++ /trunk/src/VBox/VMM/VMMAll/TMAll.cpp	(revision 87773)
@@ -78,5 +78,5 @@
                           || enmState == VMSTATE_RESETTING \
                           || enmState == VMSTATE_RESETTING_LS ),\
-                      ("pTimer=%p (%s) pCritSect=%p (%s)\n", a_pTimer, R3STRING(a_pTimer->pszDesc), \
+                      ("pTimer=%p (%s) pCritSect=%p (%s)\n", a_pTimer, (a_pTimer)->szName, \
                        (a_pTimer)->pCritSect, R3STRING(PDMR3CritSectName((a_pTimer)->pCritSect)) )); \
         } \
@@ -112,5 +112,5 @@
                           || enmState == VMSTATE_RESETTING \
                           || enmState == VMSTATE_RESETTING_LS ),\
-                      ("pTimer=%p (%s) pCritSect=%p (%s)\n", pTimer, R3STRING(pTimer->pszDesc), \
+                      ("pTimer=%p (%s) pCritSect=%p (%s)\n", pTimer, pTimer->szName, \
                        (pTimer)->pCritSect, R3STRING(PDMR3CritSectName((pTimer)->pCritSect)) )); \
         } \
@@ -478,5 +478,5 @@
                     TMTIMER_SET_HEAD(pQueue, pTimer);
                     ASMAtomicWriteU64(&pQueue->u64Expire, u64Expire);
-                    DBGFTRACE_U64_TAG2(pTimer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive head", R3STRING(pTimer->pszDesc));
+                    DBGFTRACE_U64_TAG2(pTimer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive head", pTimer->szName);
                 }
                 TMTIMER_SET_PREV(pCur, pTimer);
@@ -487,5 +487,5 @@
                 TMTIMER_SET_NEXT(pCur, pTimer);
                 TMTIMER_SET_PREV(pTimer, pCur);
-                DBGFTRACE_U64_TAG2(pTimer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive tail", R3STRING(pTimer->pszDesc));
+                DBGFTRACE_U64_TAG2(pTimer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive tail", pTimer->szName);
                 return;
             }
@@ -496,5 +496,5 @@
         TMTIMER_SET_HEAD(pQueue, pTimer);
         ASMAtomicWriteU64(&pQueue->u64Expire, u64Expire);
-        DBGFTRACE_U64_TAG2(pTimer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive empty", R3STRING(pTimer->pszDesc));
+        DBGFTRACE_U64_TAG2(pTimer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive empty", pTimer->szName);
     }
 }
@@ -628,6 +628,6 @@
          * Do the scheduling.
          */
-        Log2(("tmTimerQueueSchedule: %p:{.enmState=%s, .enmClock=%d, .enmType=%d, .pszDesc=%s}\n",
-              pTimer, tmTimerState(pTimer->enmState), pTimer->enmClock, pTimer->enmType, R3STRING(pTimer->pszDesc)));
+        Log2(("tmTimerQueueSchedule: %p:{.enmState=%s, .enmClock=%d, .enmType=%d, .szName=%s}\n",
+              pTimer, tmTimerState(pTimer->enmState), pTimer->enmClock, pTimer->enmType, pTimer->szName));
         tmTimerQueueScheduleOne(pVM, pQueue, pTimer);
         Log2(("tmTimerQueueSchedule: %p: new %s\n", pTimer, tmTimerState(pTimer->enmState)));
@@ -1186,5 +1186,5 @@
     }
     ASMAtomicWriteU64(&pTimer->u64Expire, u64Expire);
-    Log2(("tmTimerSetOptimizedStart: %p:{.pszDesc='%s', .u64Expire=%'RU64}\n", pTimer, R3STRING(pTimer->pszDesc), u64Expire));
+    Log2(("tmTimerSetOptimizedStart: %p:{.pszDesc='%s', .u64Expire=%'RU64}\n", pTimer, pTimer->szName, u64Expire));
 
     /*
@@ -1230,5 +1230,5 @@
 
             AssertMsg(u64Expire >= pVM->tm.s.u64VirtualSync,
-                      ("%'RU64 < %'RU64 %s\n", u64Expire, pVM->tm.s.u64VirtualSync, R3STRING(pTimer->pszDesc)));
+                      ("%'RU64 < %'RU64 %s\n", u64Expire, pVM->tm.s.u64VirtualSync, pTimer->szName));
             pTimer->u64Expire = u64Expire;
             TM_SET_STATE(pTimer, TMTIMERSTATE_ACTIVE);
@@ -1254,10 +1254,10 @@
         case TMTIMERSTATE_DESTROY:
         case TMTIMERSTATE_FREE:
-            AssertLogRelMsgFailed(("Invalid timer state %s: %s\n", tmTimerState(enmState), R3STRING(pTimer->pszDesc)));
+            AssertLogRelMsgFailed(("Invalid timer state %s: %s\n", tmTimerState(enmState), pTimer->szName));
             rc = VERR_TM_INVALID_STATE;
             break;
 
         default:
-            AssertMsgFailed(("Unknown timer state %d: %s\n", enmState, R3STRING(pTimer->pszDesc)));
+            AssertMsgFailed(("Unknown timer state %d: %s\n", enmState, pTimer->szName));
             rc = VERR_TM_UNKNOWN_STATE;
             break;
@@ -1291,5 +1291,5 @@
     TMTIMER_ASSERT_CRITSECT(pVM, pTimer);
 
-    DBGFTRACE_U64_TAG2(pVM, u64Expire, "TMTimerSet", R3STRING(pTimer->pszDesc));
+    DBGFTRACE_U64_TAG2(pVM, u64Expire, "TMTimerSet", pTimer->szName);
 
 #ifdef VBOX_WITH_STATISTICS
@@ -1347,5 +1347,5 @@
         TMTIMERSTATE enmState = pTimer->enmState;
         Log2(("TMTimerSet: %p:{.enmState=%s, .pszDesc='%s'} cRetries=%d u64Expire=%'RU64\n",
-              pTimer, tmTimerState(enmState), R3STRING(pTimer->pszDesc), cRetries, u64Expire));
+              pTimer, tmTimerState(enmState), pTimer->szName, cRetries, u64Expire));
         switch (enmState)
         {
@@ -1417,13 +1417,13 @@
             case TMTIMERSTATE_DESTROY:
             case TMTIMERSTATE_FREE:
-                AssertMsgFailed(("Invalid timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));
+                AssertMsgFailed(("Invalid timer state %d (%s)\n", enmState, pTimer->szName));
                 return VERR_TM_INVALID_STATE;
             default:
-                AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));
+                AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, pTimer->szName));
                 return VERR_TM_UNKNOWN_STATE;
         }
     } while (cRetries-- > 0);
 
-    AssertMsgFailed(("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, R3STRING(pTimer->pszDesc)));
+    AssertMsgFailed(("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer->szName));
     STAM_PROFILE_STOP(&pVM->tm.s.CTX_SUFF_Z(StatTimerSet), a);
     return VERR_TM_TIMER_UNSTABLE_STATE;
@@ -1486,10 +1486,10 @@
     uint64_t const  u64Expire = cTicksToNext + tmTimerSetRelativeNowWorker(pVM, enmClock, pu64Now);
     pTimer->u64Expire         = u64Expire;
-    Log2(("tmTimerSetRelativeOptimizedStart: %p:{.pszDesc='%s', .u64Expire=%'RU64} cTicksToNext=%'RU64\n", pTimer, R3STRING(pTimer->pszDesc), u64Expire, cTicksToNext));
+    Log2(("tmTimerSetRelativeOptimizedStart: %p:{.pszDesc='%s', .u64Expire=%'RU64} cTicksToNext=%'RU64\n", pTimer, pTimer->szName, u64Expire, cTicksToNext));
 
     /*
      * Link the timer into the active list.
      */
-    DBGFTRACE_U64_TAG2(pVM, u64Expire, "tmTimerSetRelativeOptimizedStart", R3STRING(pTimer->pszDesc));
+    DBGFTRACE_U64_TAG2(pVM, u64Expire, "tmTimerSetRelativeOptimizedStart", pTimer->szName);
     tmTimerQueueLinkActive(&pVM->tm.s.CTX_SUFF(paTimerQueues)[enmClock], pTimer, u64Expire);
 
@@ -1561,10 +1561,10 @@
         case TMTIMERSTATE_DESTROY:
         case TMTIMERSTATE_FREE:
-            AssertLogRelMsgFailed(("Invalid timer state %s: %s\n", tmTimerState(enmState), R3STRING(pTimer->pszDesc)));
+            AssertLogRelMsgFailed(("Invalid timer state %s: %s\n", tmTimerState(enmState), pTimer->szName));
             rc = VERR_TM_INVALID_STATE;
             break;
 
         default:
-            AssertMsgFailed(("Unknown timer state %d: %s\n", enmState, R3STRING(pTimer->pszDesc)));
+            AssertMsgFailed(("Unknown timer state %d: %s\n", enmState, pTimer->szName));
             rc = VERR_TM_UNKNOWN_STATE;
             break;
@@ -1598,5 +1598,5 @@
     TMTIMER_ASSERT_CRITSECT(pVM, pTimer);
 
-    DBGFTRACE_U64_TAG2(pVM, cTicksToNext, "TMTimerSetRelative", R3STRING(pTimer->pszDesc));
+    DBGFTRACE_U64_TAG2(pVM, cTicksToNext, "TMTimerSetRelative", pTimer->szName);
 
 #ifdef VBOX_WITH_STATISTICS
@@ -1681,5 +1681,5 @@
                     pTimer->u64Expire = cTicksToNext + tmTimerSetRelativeNowWorker(pVM, enmClock, pu64Now);
                     Log2(("TMTimerSetRelative: %p:{.enmState=%s, .pszDesc='%s', .u64Expire=%'RU64} cRetries=%d [EXP/STOP]\n",
-                          pTimer, tmTimerState(enmState), R3STRING(pTimer->pszDesc), pTimer->u64Expire, cRetries));
+                          pTimer, tmTimerState(enmState), pTimer->szName, pTimer->u64Expire, cRetries));
                     TM_SET_STATE(pTimer, TMTIMERSTATE_PENDING_SCHEDULE);
                     tmSchedule(pVM, pTimer);
@@ -1696,5 +1696,5 @@
                     pTimer->u64Expire = cTicksToNext + tmTimerSetRelativeNowWorker(pVM, enmClock, pu64Now);
                     Log2(("TMTimerSetRelative: %p:{.enmState=%s, .pszDesc='%s', .u64Expire=%'RU64} cRetries=%d [PEND_SCHED]\n",
-                          pTimer, tmTimerState(enmState), R3STRING(pTimer->pszDesc), pTimer->u64Expire, cRetries));
+                          pTimer, tmTimerState(enmState), pTimer->szName, pTimer->u64Expire, cRetries));
                     TM_SET_STATE(pTimer, TMTIMERSTATE_PENDING_SCHEDULE);
                     tmSchedule(pVM, pTimer);
@@ -1711,5 +1711,5 @@
                     pTimer->u64Expire = cTicksToNext + tmTimerSetRelativeNowWorker(pVM, enmClock, pu64Now);
                     Log2(("TMTimerSetRelative: %p:{.enmState=%s, .pszDesc='%s', .u64Expire=%'RU64} cRetries=%d [ACTIVE]\n",
-                          pTimer, tmTimerState(enmState), R3STRING(pTimer->pszDesc), pTimer->u64Expire, cRetries));
+                          pTimer, tmTimerState(enmState), pTimer->szName, pTimer->u64Expire, cRetries));
                     TM_SET_STATE(pTimer, TMTIMERSTATE_PENDING_RESCHEDULE);
                     tmSchedule(pVM, pTimer);
@@ -1726,5 +1726,5 @@
                     pTimer->u64Expire = cTicksToNext + tmTimerSetRelativeNowWorker(pVM, enmClock, pu64Now);
                     Log2(("TMTimerSetRelative: %p:{.enmState=%s, .pszDesc='%s', .u64Expire=%'RU64} cRetries=%d [PEND_RESCH/STOP]\n",
-                          pTimer, tmTimerState(enmState), R3STRING(pTimer->pszDesc), pTimer->u64Expire, cRetries));
+                          pTimer, tmTimerState(enmState), pTimer->szName, pTimer->u64Expire, cRetries));
                     TM_SET_STATE(pTimer, TMTIMERSTATE_PENDING_RESCHEDULE);
                     tmSchedule(pVM, pTimer);
@@ -1753,10 +1753,10 @@
             case TMTIMERSTATE_DESTROY:
             case TMTIMERSTATE_FREE:
-                AssertMsgFailed(("Invalid timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));
+                AssertMsgFailed(("Invalid timer state %d (%s)\n", enmState, pTimer->szName));
                 rc = VERR_TM_INVALID_STATE;
                 break;
 
             default:
-                AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));
+                AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, pTimer->szName));
                 rc = VERR_TM_UNKNOWN_STATE;
                 break;
@@ -1774,5 +1774,5 @@
         if (cRetries <= 0)
         {
-            AssertMsgFailed(("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, R3STRING(pTimer->pszDesc)));
+            AssertMsgFailed(("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer->szName));
             rc = VERR_TM_TIMER_UNSTABLE_STATE;
             tmTimerSetRelativeNowWorker(pVM, enmClock, pu64Now);
@@ -1905,10 +1905,10 @@
         case TMTIMERSTATE_DESTROY:
         case TMTIMERSTATE_FREE:
-            AssertLogRelMsgFailed(("Invalid timer state %s: %s\n", tmTimerState(enmState), R3STRING(pTimer->pszDesc)));
+            AssertLogRelMsgFailed(("Invalid timer state %s: %s\n", tmTimerState(enmState), pTimer->szName));
             rc = VERR_TM_INVALID_STATE;
             break;
 
         default:
-            AssertMsgFailed(("Unknown timer state %d: %s\n", enmState, R3STRING(pTimer->pszDesc)));
+            AssertMsgFailed(("Unknown timer state %d: %s\n", enmState, pTimer->szName));
             rc = VERR_TM_UNKNOWN_STATE;
             break;
@@ -1961,5 +1961,5 @@
         TMTIMERSTATE    enmState = pTimer->enmState;
         Log2(("TMTimerStop: %p:{.enmState=%s, .pszDesc='%s'} cRetries=%d\n",
-              pTimer, tmTimerState(enmState), R3STRING(pTimer->pszDesc), cRetries));
+              pTimer, tmTimerState(enmState), pTimer->szName, cRetries));
         switch (enmState)
         {
@@ -2017,13 +2017,13 @@
             case TMTIMERSTATE_DESTROY:
             case TMTIMERSTATE_FREE:
-                AssertMsgFailed(("Invalid timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));
+                AssertMsgFailed(("Invalid timer state %d (%s)\n", enmState, pTimer->szName));
                 return VERR_TM_INVALID_STATE;
             default:
-                AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));
+                AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, pTimer->szName));
                 return VERR_TM_UNKNOWN_STATE;
         }
     } while (cRetries-- > 0);
 
-    AssertMsgFailed(("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, R3STRING(pTimer->pszDesc)));
+    AssertMsgFailed(("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer->szName));
     STAM_PROFILE_STOP(&pVM->tm.s.CTX_SUFF_Z(StatTimerStop), a);
     return VERR_TM_TIMER_UNSTABLE_STATE;
@@ -2062,5 +2062,5 @@
     }
     //Log2(("TMTimerGet: returns %'RU64 (pTimer=%p:{.enmState=%s, .pszDesc='%s'})\n",
-    //      u64, pTimer, tmTimerState(pTimer->enmState), R3STRING(pTimer->pszDesc)));
+    //      u64, pTimer, tmTimerState(pTimer->enmState), pTimer->szName));
     return u64;
 }
@@ -2119,5 +2119,5 @@
             case TMTIMERSTATE_PENDING_STOP_SCHEDULE:
                 Log2(("TMTimerGetExpire: returns ~0 (pTimer=%p:{.enmState=%s, .pszDesc='%s'})\n",
-                      pTimer, tmTimerState(pTimer->enmState), R3STRING(pTimer->pszDesc)));
+                      pTimer, tmTimerState(pTimer->enmState), pTimer->szName));
                 return UINT64_MAX;
 
@@ -2126,5 +2126,5 @@
             case TMTIMERSTATE_PENDING_SCHEDULE:
                 Log2(("TMTimerGetExpire: returns %'RU64 (pTimer=%p:{.enmState=%s, .pszDesc='%s'})\n",
-                      pTimer->u64Expire, pTimer, tmTimerState(pTimer->enmState), R3STRING(pTimer->pszDesc)));
+                      pTimer->u64Expire, pTimer, tmTimerState(pTimer->enmState), pTimer->szName));
                 return pTimer->u64Expire;
 
@@ -2142,17 +2142,17 @@
             case TMTIMERSTATE_DESTROY:
             case TMTIMERSTATE_FREE:
-                AssertMsgFailed(("Invalid timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));
+                AssertMsgFailed(("Invalid timer state %d (%s)\n", enmState, pTimer->szName));
                 Log2(("TMTimerGetExpire: returns ~0 (pTimer=%p:{.enmState=%s, .pszDesc='%s'})\n",
-                      pTimer, tmTimerState(pTimer->enmState), R3STRING(pTimer->pszDesc)));
+                      pTimer, tmTimerState(pTimer->enmState), pTimer->szName));
                 return UINT64_MAX;
             default:
-                AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));
+                AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, pTimer->szName));
                 return UINT64_MAX;
         }
     } while (cRetries-- > 0);
 
-    AssertMsgFailed(("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, R3STRING(pTimer->pszDesc)));
+    AssertMsgFailed(("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer->szName));
     Log2(("TMTimerGetExpire: returns ~0 (pTimer=%p:{.enmState=%s, .pszDesc='%s'})\n",
-          pTimer, tmTimerState(pTimer->enmState), R3STRING(pTimer->pszDesc)));
+          pTimer, tmTimerState(pTimer->enmState), pTimer->szName));
     return UINT64_MAX;
 }
@@ -2180,5 +2180,5 @@
         case TMTIMERSTATE_PENDING_STOP_SCHEDULE:
             Log2(("TMTimerIsActive: returns false (pTimer=%p:{.enmState=%s, .pszDesc='%s'})\n",
-                  pTimer, tmTimerState(pTimer->enmState), R3STRING(pTimer->pszDesc)));
+                  pTimer, tmTimerState(pTimer->enmState), pTimer->szName));
             return false;
 
@@ -2189,5 +2189,5 @@
         case TMTIMERSTATE_PENDING_RESCHEDULE_SET_EXPIRE:
             Log2(("TMTimerIsActive: returns true (pTimer=%p:{.enmState=%s, .pszDesc='%s'})\n",
-                  pTimer, tmTimerState(pTimer->enmState), R3STRING(pTimer->pszDesc)));
+                  pTimer, tmTimerState(pTimer->enmState), pTimer->szName));
             return true;
 
@@ -2197,10 +2197,10 @@
         case TMTIMERSTATE_DESTROY:
         case TMTIMERSTATE_FREE:
-            AssertMsgFailed(("Invalid timer state %s (%s)\n", tmTimerState(enmState), R3STRING(pTimer->pszDesc)));
+            AssertMsgFailed(("Invalid timer state %s (%s)\n", tmTimerState(enmState), pTimer->szName));
             Log2(("TMTimerIsActive: returns false (pTimer=%p:{.enmState=%s, .pszDesc='%s'})\n",
-                  pTimer, tmTimerState(pTimer->enmState), R3STRING(pTimer->pszDesc)));
+                  pTimer, tmTimerState(pTimer->enmState), pTimer->szName));
             return false;
         default:
-            AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));
+            AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, pTimer->szName));
             return false;
     }
Index: /trunk/src/VBox/VMM/VMMR3/CPUM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/CPUM.cpp	(revision 87772)
+++ /trunk/src/VBox/VMM/VMMR3/CPUM.cpp	(revision 87773)
@@ -4510,9 +4510,8 @@
                 {
                     PVMCPU pVCpu = pVM->apCpusR3[idCpu];
-                    /* The string cannot live on the stack. It should be safe to call MMR3HeapAPrintf here as
-                       MMR3HyperInitFinalize has already completed at this point. */
-                    char *pszTimerName = MMR3HeapAPrintf(pVM, MM_TAG_CPUM_CTX, "Nested Guest VMX-preempt. timer %u", idCpu);
+                    char szName[32];
+                    RTStrPrintf(szName, sizeof(szName), "Nested VMX-preemption %u", idCpu);
                     int rc = TMR3TimerCreate(pVM, TMCLOCK_VIRTUAL_SYNC, cpumR3VmxPreemptTimerCallback, pVCpu,
-                                             TMTIMER_FLAGS_RING0, pszTimerName, &pVCpu->cpum.s.hNestedVmxPreemptTimer);
+                                             TMTIMER_FLAGS_RING0, szName, &pVCpu->cpum.s.hNestedVmxPreemptTimer);
                     AssertLogRelRCReturn(rc, rc);
                 }
Index: /trunk/src/VBox/VMM/VMMR3/GIMHv.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/GIMHv.cpp	(revision 87772)
+++ /trunk/src/VBox/VMM/VMMR3/GIMHv.cpp	(revision 87773)
@@ -518,8 +518,8 @@
 
                 /* Create the timer and associate the context pointers. */
-                RTStrPrintf(&pHvStimer->szTimerDesc[0], sizeof(pHvStimer->szTimerDesc), "Hyper-V[%u] Timer%u", pVCpu->idCpu,
-                            idxStimer);
+                char szName[32];
+                RTStrPrintf(szName, sizeof(szName), "Hyper-V[%u] Timer%u", pVCpu->idCpu, idxStimer);
                 rc = TMR3TimerCreate(pVM, TMCLOCK_VIRTUAL_SYNC, gimR3HvTimerCallback, pHvStimer /* pvUser */,
-                                     TMTIMER_FLAGS_RING0, pHvStimer->szTimerDesc, &pHvStimer->hTimer);
+                                     TMTIMER_FLAGS_RING0, szName, &pHvStimer->hTimer);
                 AssertLogRelRCReturn(rc, rc);
             }
Index: /trunk/src/VBox/VMM/VMMR3/PDMDevHlp.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PDMDevHlp.cpp	(revision 87772)
+++ /trunk/src/VBox/VMM/VMMR3/PDMDevHlp.cpp	(revision 87773)
@@ -422,9 +422,11 @@
              pDevIns->pReg->szName, pDevIns->iInstance, enmClock, pfnCallback, pvUser, fFlags, pszDesc, pszDesc, phTimer));
 
-    if (pDevIns->iInstance > 0) /** @todo use a string cache here later. */
-    {
-         char *pszDesc2 = MMR3HeapAPrintf(pVM, MM_TAG_PDM_DEVICE_DESC, "%s[%u]", pszDesc, pDevIns->iInstance);
-         if (pszDesc2)
-             pszDesc = pszDesc2;
+    /* Mangle the timer name if there are more than one instance of this device. */
+    char szName[32];
+    AssertReturn(strlen(pszDesc) < sizeof(szName) - 3, VERR_INVALID_NAME);
+    if (pDevIns->iInstance > 0)
+    {
+        RTStrPrintf(szName, sizeof(szName), "%s[%u]", pszDesc, pDevIns->iInstance);
+        pszDesc = szName;
     }
 
Index: /trunk/src/VBox/VMM/VMMR3/PDMDriver.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PDMDriver.cpp	(revision 87772)
+++ /trunk/src/VBox/VMM/VMMR3/PDMDriver.cpp	(revision 87773)
@@ -1325,4 +1325,13 @@
     LogFlow(("pdmR3DrvHlp_TimerCreate: caller='%s'/%d: enmClock=%d pfnCallback=%p pvUser=%p fFlags=%#x pszDesc=%p:{%s} phTimer=%p\n",
              pDrvIns->pReg->szName, pDrvIns->iInstance, enmClock, pfnCallback, pvUser, fFlags, pszDesc, pszDesc, phTimer));
+
+    /* Mangle the timer name if there are more than once instance of this driver. */
+    char szName[32];
+    AssertReturn(strlen(pszDesc) < sizeof(szName) - 3, VERR_INVALID_NAME);
+    if (pDrvIns->iInstance > 0)
+    {
+        RTStrPrintf(szName, sizeof(szName), "%s[%u]", pszDesc, pDrvIns->iInstance);
+        pszDesc = szName;
+    }
 
     /* Clear the ring-0 flag if the driver isn't configured for ring-0. */
Index: /trunk/src/VBox/VMM/VMMR3/PDMQueue.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PDMQueue.cpp	(revision 87772)
+++ /trunk/src/VBox/VMM/VMMR3/PDMQueue.cpp	(revision 87773)
@@ -113,5 +113,7 @@
     if (cMilliesInterval)
     {
-        rc = TMR3TimerCreate(pVM, TMCLOCK_REAL, pdmR3QueueTimer, pQueue, TMTIMER_FLAGS_NO_RING0, "Queue timer", &pQueue->hTimer);
+        char szName[32];
+        RTStrPrintf(szName, sizeof(szName), "Queue %s", pQueue->pszName);
+        rc = TMR3TimerCreate(pVM, TMCLOCK_REAL, pdmR3QueueTimer, pQueue, TMTIMER_FLAGS_NO_RING0, szName, &pQueue->hTimer);
         if (RT_SUCCESS(rc))
         {
Index: /trunk/src/VBox/VMM/VMMR3/PDMUsb.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PDMUsb.cpp	(revision 87772)
+++ /trunk/src/VBox/VMM/VMMR3/PDMUsb.cpp	(revision 87773)
@@ -1828,8 +1828,12 @@
     fFlags |= TMTIMER_FLAGS_NO_RING0;
 
-    /** @todo use a string cache here later. */
-    char *pszDesc2 = MMR3HeapAPrintf(pVM, MM_TAG_PDM_USB_DESC, "%s[%s:%u]", pszDesc, pUsbIns->Internal.s.pUsbDev->pReg->szName, pUsbIns->iInstance);
-    if (pszDesc2)
-        pszDesc = pszDesc2;
+    /* Mangle the timer name if there are more than one instance of this device. */
+    char szName[32];
+    AssertReturn(strlen(pszDesc) < sizeof(szName) - 8, VERR_INVALID_NAME);
+    if (pUsbIns->iInstance > 0)
+    {
+        RTStrPrintf(szName, sizeof(szName), "%s[%u:%s]", pszDesc, pUsbIns->iInstance, pUsbIns->Internal.s.pUsbDev->pReg->szName);
+        pszDesc = szName;
+    }
 
     int rc = TMR3TimerCreateUsb(pVM, pUsbIns, enmClock, pfnCallback, pvUser, fFlags, pszDesc, phTimer);
Index: /trunk/src/VBox/VMM/VMMR3/TM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/TM.cpp	(revision 87772)
+++ /trunk/src/VBox/VMM/VMMR3/TM.cpp	(revision 87773)
@@ -1500,17 +1500,25 @@
  * @param   enmClock    The timer clock.
  * @param   fFlags      TMTIMER_FLAGS_XXX.
- * @param   pszDesc     The timer description.
+ * @param   pszName     The timer name.
  * @param   ppTimer     Where to store the timer pointer on success.
  */
-static int tmr3TimerCreate(PVM pVM, TMCLOCK enmClock, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer)
-{
+static int tmr3TimerCreate(PVM pVM, TMCLOCK enmClock, uint32_t fFlags, const char *pszName, PPTMTIMERR3 ppTimer)
+{
+    PTMTIMERR3 pTimer;
+
+    /*
+     * Validate input.
+     */
     VM_ASSERT_EMT(pVM);
     AssertReturn((fFlags & (TMTIMER_FLAGS_RING0 | TMTIMER_FLAGS_NO_RING0)) != (TMTIMER_FLAGS_RING0 | TMTIMER_FLAGS_NO_RING0),
                  VERR_INVALID_FLAGS);
+    AssertPtrReturn(pszName, VERR_INVALID_POINTER);
+    size_t const cchName = strlen(pszName);
+    AssertMsgReturn(cchName < sizeof(pTimer->szName), ("timer name too long: %s\n", pszName), VERR_INVALID_NAME);
+    AssertMsgReturn(cchName > 2,  ("Too short timer name: %s\n", pszName), VERR_INVALID_NAME);
 
     /*
      * Allocate the timer.
      */
-    PTMTIMERR3 pTimer = NULL;
     if (pVM->tm.s.pFree && VM_IS_EMT(pVM))
     {
@@ -1519,4 +1527,6 @@
         Log3(("TM: Recycling timer %p, new free head %p.\n", pTimer, pTimer->pBigNext));
     }
+    else
+        pTimer = NULL;
 
     if (!pTimer)
@@ -1542,5 +1552,6 @@
     pTimer->pvUser          = NULL;
     pTimer->pCritSect       = NULL;
-    pTimer->pszDesc         = pszDesc;
+    memcpy(pTimer->szName, pszName, cchName);
+    pTimer->szName[cchName] = '\0';
 
     /* insert into the list of created timers. */
@@ -1556,21 +1567,20 @@
     TM_UNLOCK_TIMERS(pVM);
 
+#ifdef VBOX_WITH_STATISTICS
     /*
      * Register statistics.
      */
-#ifdef VBOX_WITH_STATISTICS
-
     STAMR3RegisterF(pVM, &pTimer->StatTimer,        STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL,
-                    tmR3TimerClockName(pTimer), "/TM/Timers/%s", pszDesc);
+                    tmR3TimerClockName(pTimer), "/TM/Timers/%s", pTimer->szName);
     STAMR3RegisterF(pVM, &pTimer->StatCritSectEnter, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL,
-                    "", "/TM/Timers/%s/CritSectEnter", pszDesc);
+                    "", "/TM/Timers/%s/CritSectEnter", pTimer->szName);
     STAMR3RegisterF(pVM, &pTimer->StatGet,          STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_CALLS,
-                    "", "/TM/Timers/%s/Get", pszDesc);
+                    "", "/TM/Timers/%s/Get", pTimer->szName);
     STAMR3RegisterF(pVM, &pTimer->StatSetAbsolute,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_CALLS,
-                    "", "/TM/Timers/%s/SetAbsolute", pszDesc);
+                    "", "/TM/Timers/%s/SetAbsolute", pTimer->szName);
     STAMR3RegisterF(pVM, &pTimer->StatSetRelative,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_CALLS,
-                    "", "/TM/Timers/%s/SetRelative", pszDesc);
+                    "", "/TM/Timers/%s/SetRelative", pTimer->szName);
     STAMR3RegisterF(pVM, &pTimer->StatStop,         STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_CALLS,
-                    "", "/TM/Timers/%s/Stop", pszDesc);
+                    "", "/TM/Timers/%s/Stop", pTimer->szName);
 #endif
 
@@ -1590,11 +1600,10 @@
  * @param   pvUser          The user argument to the callback.
  * @param   fFlags          Timer creation flags, see grp_tm_timer_flags.
- * @param   pszDesc         Pointer to description string which must stay around
- *                          until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()).
+ * @param   pszName         Timer name (will be copied).  Max 31 chars.
  * @param   phTimer         Where to store the timer handle on success.
  */
 VMM_INT_DECL(int) TMR3TimerCreateDevice(PVM pVM, PPDMDEVINS pDevIns, TMCLOCK enmClock,
                                         PFNTMTIMERDEV pfnCallback, void *pvUser,
-                                        uint32_t fFlags, const char *pszDesc, PTMTIMERHANDLE phTimer)
+                                        uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer)
 {
     AssertReturn(!(fFlags & ~(TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0 | TMTIMER_FLAGS_NO_RING0)),
@@ -1605,5 +1614,5 @@
      */
     PTMTIMER pTimer;
-    int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszDesc, &pTimer);
+    int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszName, &pTimer);
     if (RT_SUCCESS(rc))
     {
@@ -1615,5 +1624,5 @@
             pTimer->pCritSect = PDMR3DevGetCritSect(pVM, pDevIns);
         *phTimer = pTimer->hSelf;
-        Log(("TM: Created device timer %p clock %d callback %p '%s'\n", phTimer, enmClock, pfnCallback, pszDesc));
+        Log(("TM: Created device timer %p clock %d callback %p '%s'\n", phTimer, enmClock, pfnCallback, pszName));
     }
 
@@ -1634,11 +1643,10 @@
  * @param   pvUser          The user argument to the callback.
  * @param   fFlags          Timer creation flags, see grp_tm_timer_flags.
- * @param   pszDesc         Pointer to description string which must stay around
- *                          until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()).
+ * @param   pszName         Timer name (will be copied).  Max 31 chars.
  * @param   phTimer         Where to store the timer handle on success.
  */
 VMM_INT_DECL(int) TMR3TimerCreateUsb(PVM pVM, PPDMUSBINS pUsbIns, TMCLOCK enmClock,
                                      PFNTMTIMERUSB pfnCallback, void *pvUser,
-                                     uint32_t fFlags, const char *pszDesc, PTMTIMERHANDLE phTimer)
+                                     uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer)
 {
     AssertReturn(!(fFlags & ~(TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0)), VERR_INVALID_PARAMETER);
@@ -1648,5 +1656,5 @@
      */
     PTMTIMER pTimer;
-    int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszDesc, &pTimer);
+    int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszName, &pTimer);
     if (RT_SUCCESS(rc))
     {
@@ -1663,5 +1671,5 @@
         //}
         *phTimer = pTimer->hSelf;
-        Log(("TM: Created USB device timer %p clock %d callback %p '%s'\n", *phTimer, enmClock, pfnCallback, pszDesc));
+        Log(("TM: Created USB device timer %p clock %d callback %p '%s'\n", *phTimer, enmClock, pfnCallback, pszName));
     }
 
@@ -1680,10 +1688,9 @@
  * @param   pvUser          The user argument to the callback.
  * @param   fFlags          Timer creation flags, see grp_tm_timer_flags.
- * @param   pszDesc         Pointer to description string which must stay around
- *                          until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()).
+ * @param   pszName         Timer name (will be copied).  Max 31 chars.
  * @param   phTimer         Where to store the timer handle on success.
  */
 VMM_INT_DECL(int) TMR3TimerCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser,
-                                        uint32_t fFlags, const char *pszDesc, PTMTIMERHANDLE phTimer)
+                                        uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer)
 {
     AssertReturn(!(fFlags & ~(TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0 | TMTIMER_FLAGS_NO_RING0)),
@@ -1694,5 +1701,5 @@
      */
     PTMTIMER pTimer;
-    int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszDesc, &pTimer);
+    int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszName, &pTimer);
     if (RT_SUCCESS(rc))
     {
@@ -1702,5 +1709,5 @@
         pTimer->pvUser          = pvUser;
         *phTimer = pTimer->hSelf;
-        Log(("TM: Created device timer %p clock %d callback %p '%s'\n", *phTimer, enmClock, pfnCallback, pszDesc));
+        Log(("TM: Created device timer %p clock %d callback %p '%s'\n", *phTimer, enmClock, pfnCallback, pszName));
     }
 
@@ -1718,10 +1725,9 @@
  * @param   pvUser          User argument to be passed to the callback.
  * @param   fFlags          Timer creation flags, see grp_tm_timer_flags.
- * @param   pszDesc         Pointer to description string which must stay around
- *                          until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()).
+ * @param   pszName         Timer name (will be copied).  Max 31 chars.
  * @param   phTimer         Where to store the timer handle on success.
  */
 VMMR3DECL(int) TMR3TimerCreate(PVM pVM, TMCLOCK enmClock, PFNTMTIMERINT pfnCallback, void *pvUser,
-                               uint32_t fFlags, const char *pszDesc, PTMTIMERHANDLE phTimer)
+                               uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer)
 {
     AssertReturn(fFlags & (TMTIMER_FLAGS_RING0 | TMTIMER_FLAGS_NO_RING0), VERR_INVALID_FLAGS);
@@ -1733,5 +1739,5 @@
      */
     PTMTIMER pTimer;
-    int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszDesc, &pTimer);
+    int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszName, &pTimer);
     if (RT_SUCCESS(rc))
     {
@@ -1740,5 +1746,5 @@
         pTimer->pvUser              = pvUser;
         *phTimer = pTimer->hSelf;
-        Log(("TM: Created internal timer %p clock %d callback %p '%s'\n", pTimer, enmClock, pfnCallback, pszDesc));
+        Log(("TM: Created internal timer %p clock %d callback %p '%s'\n", pTimer, enmClock, pfnCallback, pszName));
     }
 
@@ -1764,5 +1770,5 @@
     AssertMsg(   !pTimer->pCritSect
               || VMR3GetState(pVM) != VMSTATE_RUNNING
-              || PDMCritSectIsOwner(pTimer->pCritSect), ("%s\n", pTimer->pszDesc));
+              || PDMCritSectIsOwner(pTimer->pCritSect), ("%s\n", pTimer->szName));
 
     /*
@@ -1777,6 +1783,6 @@
          */
         TMTIMERSTATE const enmState = pTimer->enmState;
-        Log2(("TMTimerDestroy: %p:{.enmState=%s, .pszDesc='%s'} cRetries=%d\n",
-              pTimer, tmTimerState(enmState), R3STRING(pTimer->pszDesc), cRetries));
+        Log2(("TMTimerDestroy: %p:{.enmState=%s, .szName='%s'} cRetries=%d\n",
+              pTimer, tmTimerState(enmState), pTimer->szName, cRetries));
         switch (enmState)
         {
@@ -1806,9 +1812,9 @@
             case TMTIMERSTATE_PENDING_SCHEDULE_SET_EXPIRE:
             case TMTIMERSTATE_PENDING_RESCHEDULE_SET_EXPIRE:
-                AssertMsgFailed(("%p:.enmState=%s %s\n", pTimer, tmTimerState(enmState), pTimer->pszDesc));
+                AssertMsgFailed(("%p:.enmState=%s %s\n", pTimer, tmTimerState(enmState), pTimer->szName));
                 TM_UNLOCK_TIMERS(pVM);
                 if (!RTThreadYield())
                     RTThreadSleep(1);
-                AssertMsgReturn(cRetries > 0, ("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer->pszDesc),
+                AssertMsgReturn(cRetries > 0, ("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer->szName),
                                 VERR_TM_UNSTABLE_STATE);
                 TM_LOCK_TIMERS(pVM);
@@ -1824,5 +1830,5 @@
 
             default:
-                AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));
+                AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, pTimer->szName));
                 TM_UNLOCK_TIMERS(pVM);
                 return VERR_TM_UNKNOWN_STATE;
@@ -1837,7 +1843,7 @@
         if (fRc)
             break;
-        AssertMsgFailed(("%p:.enmState=%s %s\n", pTimer, tmTimerState(enmState), pTimer->pszDesc));
+        AssertMsgFailed(("%p:.enmState=%s %s\n", pTimer, tmTimerState(enmState), pTimer->szName));
         TM_UNLOCK_TIMERS(pVM);
-        AssertMsgReturn(cRetries > 0, ("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer->pszDesc),
+        AssertMsgReturn(cRetries > 0, ("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer->szName),
                         VERR_TM_UNSTABLE_STATE);
         TM_LOCK_TIMERS(pVM);
@@ -1881,5 +1887,5 @@
 #ifdef VBOX_WITH_STATISTICS
     char szPrefix[128];
-    RTStrPrintf(szPrefix, sizeof(szPrefix), "/TM/Timers/%s", pTimer->pszDesc);
+    RTStrPrintf(szPrefix, sizeof(szPrefix), "/TM/Timers/%s", pTimer->szName);
     STAMR3DeregisterByPrefix(pVM->pUVM, szPrefix);
 #endif
@@ -2266,6 +2272,6 @@
             STAM_PROFILE_STOP(&pTimer->StatCritSectEnter, Locking);
         }
-        Log2(("tmR3TimerQueueRun: %p:{.enmState=%s, .enmClock=%d, .enmType=%d, u64Expire=%llx (now=%llx) .pszDesc=%s}\n",
-              pTimer, tmTimerState(pTimer->enmState), pTimer->enmClock, pTimer->enmType, pTimer->u64Expire, u64Now, pTimer->pszDesc));
+        Log2(("tmR3TimerQueueRun: %p:{.enmState=%s, .enmClock=%d, .enmType=%d, u64Expire=%llx (now=%llx) .szName='%s'}\n",
+              pTimer, tmTimerState(pTimer->enmState), pTimer->enmClock, pTimer->enmType, pTimer->u64Expire, u64Now, pTimer->szName));
         bool fRc;
         TM_TRY_SET_STATE(pTimer, TMTIMERSTATE_EXPIRED_GET_UNLINK, TMTIMERSTATE_ACTIVE, fRc);
@@ -2298,5 +2304,5 @@
                 case TMTIMERTYPE_INTERNAL:  pTimer->u.Internal.pfnTimer(pVM, pTimer->hSelf, pTimer->pvUser); break;
                 default:
-                    AssertMsgFailed(("Invalid timer type %d (%s)\n", pTimer->enmType, pTimer->pszDesc));
+                    AssertMsgFailed(("Invalid timer type %d (%s)\n", pTimer->enmType, pTimer->szName));
                     break;
             }
@@ -2459,11 +2465,11 @@
         }
 
-        Log2(("tmR3TimerQueueRun: %p:{.enmState=%s, .enmClock=%d, .enmType=%d, u64Expire=%llx (now=%llx) .pszDesc=%s}\n",
-              pTimer, tmTimerState(pTimer->enmState), pTimer->enmClock, pTimer->enmType, pTimer->u64Expire, u64Now, pTimer->pszDesc));
+        Log2(("tmR3TimerQueueRun: %p:{.enmState=%s, .enmClock=%d, .enmType=%d, u64Expire=%llx (now=%llx) .szName='%s'}\n",
+              pTimer, tmTimerState(pTimer->enmState), pTimer->enmClock, pTimer->enmType, pTimer->u64Expire, u64Now, pTimer->szName));
 
         /* Advance the clock - don't permit timers to be out of order or armed
            in the 'past'. */
 #ifdef VBOX_STRICT
-        AssertMsg(pTimer->u64Expire >= u64Prev, ("%'RU64 < %'RU64 %s\n", pTimer->u64Expire, u64Prev, pTimer->pszDesc));
+        AssertMsg(pTimer->u64Expire >= u64Prev, ("%'RU64 < %'RU64 %s\n", pTimer->u64Expire, u64Prev, pTimer->szName));
         u64Prev = pTimer->u64Expire;
 #endif
@@ -2482,5 +2488,5 @@
             case TMTIMERTYPE_INTERNAL:  pTimer->u.Internal.pfnTimer(pVM, pTimer->hSelf, pTimer->pvUser); break;
             default:
-                AssertMsgFailed(("Invalid timer type %d (%s)\n", pTimer->enmType, pTimer->pszDesc));
+                AssertMsgFailed(("Invalid timer type %d (%s)\n", pTimer->enmType, pTimer->szName));
                 break;
         }
@@ -2713,5 +2719,5 @@
     PTMTIMER pTimer;
     TMTIMER_HANDLE_TO_PTR_RETURN(pVM, hTimer, pTimer);
-    LogFlow(("TMR3TimerSave: %p:{enmState=%s, .pszDesc={%s}} pSSM=%p\n", pTimer, tmTimerState(pTimer->enmState), pTimer->pszDesc, pSSM));
+    LogFlow(("TMR3TimerSave: %p:{enmState=%s, .szName='%s'} pSSM=%p\n", pTimer, tmTimerState(pTimer->enmState), pTimer->szName, pSSM));
 
     switch (pTimer->enmState)
@@ -2724,5 +2730,5 @@
         case TMTIMERSTATE_PENDING_SCHEDULE_SET_EXPIRE:
         case TMTIMERSTATE_PENDING_RESCHEDULE_SET_EXPIRE:
-            AssertMsgFailed(("u64Expire is being updated! (%s)\n", pTimer->pszDesc));
+            AssertMsgFailed(("u64Expire is being updated! (%s)\n", pTimer->szName));
             if (!RTThreadYield())
                 RTThreadSleep(1);
@@ -2738,9 +2744,9 @@
         case TMTIMERSTATE_DESTROY:
         case TMTIMERSTATE_FREE:
-            AssertMsgFailed(("Invalid timer state %d %s (%s)\n", pTimer->enmState, tmTimerState(pTimer->enmState), pTimer->pszDesc));
+            AssertMsgFailed(("Invalid timer state %d %s (%s)\n", pTimer->enmState, tmTimerState(pTimer->enmState), pTimer->szName));
             return SSMR3HandleSetStatus(pSSM, VERR_TM_INVALID_STATE);
     }
 
-    AssertMsgFailed(("Unknown timer state %d (%s)\n", pTimer->enmState, pTimer->pszDesc));
+    AssertMsgFailed(("Unknown timer state %d (%s)\n", pTimer->enmState, pTimer->szName));
     return SSMR3HandleSetStatus(pSSM, VERR_TM_UNKNOWN_STATE);
 }
@@ -2761,5 +2767,5 @@
     TMTIMER_HANDLE_TO_PTR_RETURN(pVM, hTimer, pTimer);
     Assert(pSSM);
-    LogFlow(("TMR3TimerLoad: %p:{enmState=%s, .pszDesc={%s}} pSSM=%p\n", pTimer, tmTimerState(pTimer->enmState), pTimer->pszDesc, pSSM));
+    LogFlow(("TMR3TimerLoad: %p:{enmState=%s, .szName='%s'} pSSM=%p\n", pTimer, tmTimerState(pTimer->enmState), pTimer->szName, pSSM));
 
     /*
@@ -2914,5 +2920,5 @@
     AssertReturn(!pTimer->pCritSect, VERR_ALREADY_EXISTS);
     AssertReturn(pTimer->enmState == TMTIMERSTATE_STOPPED, VERR_INVALID_STATE);
-    LogFlow(("pTimer=%p (%s) pCritSect=%p (%s)\n", pTimer, pTimer->pszDesc, pCritSect, pszName));
+    LogFlow(("pTimer=%p (%s) pCritSect=%p (%s)\n", pTimer, pTimer->szName, pCritSect, pszName));
 
     pTimer->pCritSect = pCritSect;
@@ -3700,5 +3706,5 @@
                         pTimer->uHzHint,
                         tmTimerState(pTimer->enmState),
-                        pTimer->pszDesc);
+                        pTimer->szName);
     }
     TM_UNLOCK_TIMERS(pVM);
@@ -3746,5 +3752,5 @@
                             pTimer->uHzHint,
                             tmTimerState(pTimer->enmState),
-                            pTimer->pszDesc);
+                            pTimer->szName);
         }
         TM_UNLOCK_TIMERS(pVM);
Index: /trunk/src/VBox/VMM/include/GIMHvInternal.h
===================================================================
--- /trunk/src/VBox/VMM/include/GIMHvInternal.h	(revision 87772)
+++ /trunk/src/VBox/VMM/include/GIMHvInternal.h	(revision 87773)
@@ -1273,7 +1273,4 @@
     /** Synthetic timer count MSR. */
     uint64_t                    uStimerCountMsr;
-    /** Timer description. */
-    char                        szTimerDesc[24];
-
 } GIMHVSTIMER;
 /** Pointer to per-VCPU Hyper-V synthetic timer. */
Index: /trunk/src/VBox/VMM/include/TMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/include/TMInternal.h	(revision 87772)
+++ /trunk/src/VBox/VMM/include/TMInternal.h	(revision 87773)
@@ -190,11 +190,6 @@
     /** Pointer to the previous timer in the list of all created timers. (TM::pTimers) */
     PTMTIMERR3              pBigPrev;
-//    /** The timer name. */
-//    char                    szName[32]
-    /** Pointer to the timer description. */
-    R3PTRTYPE(const char *) pszDesc;
-#if HC_ARCH_BITS == 32
-    uint32_t                padding0; /**< pad structure to multiple of 8 bytes. */
-#endif
+    /** The timer name. */
+    char                    szName[32];
 
 #ifdef VBOX_WITH_STATISTICS
