Index: /trunk/src/VBox/HostDrivers/Support/SUPDrv.c
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPDrv.c	(revision 53368)
+++ /trunk/src/VBox/HostDrivers/Support/SUPDrv.c	(revision 53369)
@@ -6612,5 +6612,5 @@
                 idxNewGipMaster = supdrvGipCpuIndexFromCpuId(pGip, idNewGipMaster);
                 iTSCDelta       = pGip->aCPUs[idxNewGipMaster].i64TSCDelta;
-                Assert(iTSCDelta != UINT64_MAX);
+                Assert(iTSCDelta != INT64_MAX);
                 for (i = 0; i < pGip->cCpus; i++)
                 {
@@ -6750,9 +6750,8 @@
     while (cTriesLeft-- > 0)
     {
-        unsigned    i;
-        uint64_t    uMinCmpReadTime = UINT64_MAX;
+        unsigned i;
+        uint64_t uMinCmpReadTime = UINT64_MAX;
         for (i = 0; i < GIP_TSC_DELTA_LOOPS; i++)
         {
-            RTCCUINTREG uFlags = ASMIntDisableFlags();   /* Disable interrupts per-iteration, see @bugref{6710} comment #38. */
             if (idCpu == idMaster)
             {
@@ -6760,6 +6759,12 @@
                  * The master.
                  */
+                RTCCUINTREG uFlags;
                 Assert(pGipCpuMaster->u64TSCSample == GIP_TSC_DELTA_RSVD);
                 ASMAtomicWriteU32(&g_pTscDeltaSync->u, GIP_TSC_DELTA_SYNC_START);
+
+                /* Disable interrupts only in the master for as short a period
+                   as possible, thanks again to Windows. See @bugref{6710} comment #73. */
+                uFlags = ASMIntDisableFlags();
+
                 while (ASMAtomicReadU32(&g_pTscDeltaSync->u) == GIP_TSC_DELTA_SYNC_START)
                     ;
@@ -6770,4 +6775,6 @@
                     ASMAtomicWriteU64(&pGipCpuMaster->u64TSCSample, ASMReadTSC());
                 } while (pGipCpuMaster->u64TSCSample == GIP_TSC_DELTA_RSVD);
+
+                ASMSetFlags(uFlags);
 
                 while (ASMAtomicReadU32(&g_pTscDeltaSync->u) != GIP_TSC_DELTA_SYNC_WORKER_DONE)
@@ -6839,6 +6846,4 @@
                     ASMNopPause();
             }
-
-            ASMSetFlags(uFlags);
         }
 
