Changeset 54465 in vbox
- Timestamp:
- Feb 24, 2015 6:11:12 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 98571
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/SUPDrvGip.cpp
r54464 r54465 2601 2601 bool fLagMaster; 2602 2602 bool fLagWorker; 2603 # if 0 /* pointless now */2604 bool volatile fQuitEarly;2605 # endif2606 2603 } M2; 2607 2604 #endif … … 3173 3170 pArgs->pWorker->i64TSCDelta = iBestDelta; 3174 3171 pArgs->M2.cHits += cHits; 3175 3176 #if 0 /* This is pointless now with supdrvTscDeltaVerify(0). */3177 /*3178 * Check and see if we can quit a little early. If the result is already3179 * extremely good (+/-16 ticks seems reasonable), just stop.3180 */3181 if ( iBestDelta >= 0 + GIP_TSC_DELTA_INITIAL_MASTER_VALUE3182 ? iBestDelta <= 16 + GIP_TSC_DELTA_INITIAL_MASTER_VALUE3183 : iBestDelta >= -16 + GIP_TSC_DELTA_INITIAL_MASTER_VALUE)3184 {3185 /*SUPR0Printf("quitting early #1: hits=%#x iLoop=%d iBestDelta=%lld\n", cHits, iLoop, iBestDelta);*/3186 ASMAtomicWriteBool(&pArgs->M2.fQuitEarly, true);3187 }3188 /*3189 * After a while, just stop if we get sufficent hits.3190 */3191 else if ( iLoop >= GIP_TSC_DELTA_M2_LOOPS / 33192 && cHits > 8)3193 {3194 uint32_t const cHitsNeeded = GIP_TSC_DELTA_M2_LOOPS * RT_ELEMENTS(pArgs->M2.pMasterData->aResults) / 4; /* 25% */3195 if ( pArgs->M2.cHits >= cHitsNeeded3196 && ( iBestDelta >= 0 + GIP_TSC_DELTA_INITIAL_MASTER_VALUE3197 ? iBestDelta <= GIP_TSC_DELTA_THRESHOLD_PRACTICALLY_ZERO + GIP_TSC_DELTA_INITIAL_MASTER_VALUE3198 : iBestDelta >= -GIP_TSC_DELTA_THRESHOLD_PRACTICALLY_ZERO + GIP_TSC_DELTA_INITIAL_MASTER_VALUE) )3199 {3200 /*SUPR0Printf("quitting early hits=%#x (%#x) needed=%#x iLoop=%d iBestDelta=%lld\n",3201 pArgs->M2.cHits, cHits, cHitsNeeded, iLoop, iBestDelta);*/3202 ASMAtomicWriteBool(&pArgs->M2.fQuitEarly, true);3203 }3204 }3205 #endif3206 3172 } 3207 3173 … … 3264 3230 { 3265 3231 unsigned iLoop; 3266 3267 #if 0 /* pointless now */3268 if (fIsMaster)3269 ASMAtomicWriteBool(&pArgs->M2.fQuitEarly, false);3270 #endif3271 3232 3272 3233 for (iLoop = 0; iLoop < GIP_TSC_DELTA_M2_LOOPS; iLoop++) … … 3332 3293 TSCDELTA_OTHER_SYNC_AFTER(pMySync, pOtherSync, fEFlags); 3333 3294 } 3334 3335 #if 0 /* pointless now */3336 if (ASMAtomicReadBool(&pArgs->M2.fQuitEarly))3337 break;3338 #endif3339 3340 3295 } 3341 3296 } … … 3686 3641 * This should normally be the case. 3687 3642 */ 3688 #if 13689 3643 rc = supdrvTscDeltaVerify(pArgs, &MySync, pOtherSync, fIsMaster, GIP_TSC_DELTA_INITIAL_MASTER_VALUE); 3690 #else3691 rc = VERR_OUT_OF_RANGE;3692 #endif3693 3644 if (RT_SUCCESS(rc)) 3694 3645 { … … 3750 3701 if (fIsMaster) 3751 3702 { 3752 #if 13753 3703 if (pGipCpuWorker->i64TSCDelta != INT64_MAX) 3754 #else3755 if (pGipCpuWorker->i64TSCDelta != INT64_MAX && iTry >= 11)3756 #endif3757 3704 { 3758 3705 RTCpuSetDelByIndex(&pDevExt->TscDeltaCpuSet, pGipCpuWorker->iCpuSet); … … 3913 3860 pArgs->pSyncMaster = NULL; 3914 3861 pArgs->pSyncWorker = NULL; 3915 #if 0 /* later */3916 pArgs->cMaxTscTicks = ASMAtomicReadU64(&pGip->u64CpuHz) / 2048; /* 488 us */3917 #else3918 3862 pArgs->cMaxTscTicks = ASMAtomicReadU64(&pGip->u64CpuHz) / 1024; /* 976 us */ 3919 #endif3920 3863 3921 3864 #ifdef GIP_TSC_DELTA_METHOD_1
Note:
See TracChangeset
for help on using the changeset viewer.