Index: /trunk/src/VBox/HostDrivers/Support/SUPDrvGip.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPDrvGip.cpp	(revision 56923)
+++ /trunk/src/VBox/HostDrivers/Support/SUPDrvGip.cpp	(revision 56924)
@@ -4082,18 +4082,13 @@
                 RTSpinlockRelease(pDevExt->hTscDeltaSpinlock);
 
-                /* Simple adaptive timeout. */
-                if (cConsecutiveTimeouts++ == 10)
-                {
-                    if (pDevExt->cMsTscDeltaTimeout == 1)           /* 10 ms */
-                        pDevExt->cMsTscDeltaTimeout = 10;
-                    else if (pDevExt->cMsTscDeltaTimeout == 10)     /* +100 ms */
-                        pDevExt->cMsTscDeltaTimeout = 100;
-                    else if (pDevExt->cMsTscDeltaTimeout == 100)    /* +1000 ms */
-                        pDevExt->cMsTscDeltaTimeout = 500;
-                    cConsecutiveTimeouts = 0;
-                }
-                rc = RTThreadUserWait(pDevExt->hTscDeltaThread, pDevExt->cMsTscDeltaTimeout);
+                /*
+                 * Linux counts uninterruptible sleeps as load, hence we shall do a
+                 * regular, interruptible sleep here and ignore wake ups due to signals.
+                 * See task_contributes_to_load() in include/linux/sched.h in the Linux sources.
+                 */
+                rc = RTThreadUserWaitNoResume(pDevExt->hTscDeltaThread, pDevExt->cMsTscDeltaTimeout);
                 if (   RT_FAILURE(rc)
-                    && rc != VERR_TIMEOUT)
+                    && rc != VERR_TIMEOUT
+                    && rc != VERR_INTERRUPTED)
                     return supdrvTscDeltaThreadButchered(pDevExt, false /* fSpinlockHeld */, "RTThreadUserWait", rc);
                 RTThreadUserReset(pDevExt->hTscDeltaThread);
@@ -4108,5 +4103,4 @@
                     return supdrvTscDeltaThreadButchered(pDevExt, true /* fSpinlockHeld */, "RTSemEventSignal", rc);
                 RTSpinlockRelease(pDevExt->hTscDeltaSpinlock);
-                pDevExt->cMsTscDeltaTimeout = 1;
                 RTThreadSleep(1);
                 /* fall thru */
@@ -4343,5 +4337,5 @@
         {
             pDevExt->enmTscDeltaThreadState = kTscDeltaThreadState_Creating;
-            pDevExt->cMsTscDeltaTimeout = 1;
+            pDevExt->cMsTscDeltaTimeout = 60000;
             rc = RTThreadCreate(&pDevExt->hTscDeltaThread, supdrvTscDeltaThread, pDevExt, 0 /* cbStack */,
                                 RTTHREADTYPE_DEFAULT, RTTHREADFLAGS_WAITABLE, "VBoxTscThread");
