VirtualBox

Ignore:
Timestamp:
Feb 24, 2015 4:15:41 PM (10 years ago)
Author:
vboxsync
Message:

nits

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/SUPDrvGip.cpp

    r54456 r54458  
    766766    uint64_t            nsNow;
    767767    uint64_t            uTsc;
    768     RTCCUINTREG         uFlags;
     768    RTCCUINTREG         fEFlags;
    769769
    770770    /* Paranoia. */
     
    805805#endif
    806806
    807     uFlags = ASMIntDisableFlags();
     807    fEFlags = ASMIntDisableFlags();
    808808    uTsc    = ASMReadTSC();
    809809    nsNow   = RTTimeSystemNanoTS();
    810810    idCpu   = RTMpCpuId();
    811     ASMSetFlags(uFlags);
     811    ASMSetFlags(fEFlags);
    812812
    813813    cNsElapsed          = nsNow - pDevExt->nsStartInvarTscRefine;
     
    919919{
    920920    uint64_t    u64NanoTS;
    921     RTCCUINTREG uFlags;
     921    RTCCUINTREG fEFlags;
    922922    int         rc;
    923923
     
    938938        ASMNopPause();
    939939
    940     uFlags = ASMIntDisableFlags();
     940    fEFlags = ASMIntDisableFlags();
    941941    pDevExt->uTscStartInvarTscRefine = ASMReadTSC();
    942942    pDevExt->nsStartInvarTscRefine   = RTTimeSystemNanoTS();
    943943    pDevExt->idCpuInvarTscRefine     = RTMpCpuId();
    944     ASMSetFlags(uFlags);
     944    ASMSetFlags(fEFlags);
    945945
    946946/** @todo we need a power management callback that disables the timer if the
     
    10031003DECLCALLBACK(void) supdrvGipInitReadTscAndNanoTsOnCpu(RTCPUID idCpu, void *pvUser1, void *pvUser2)
    10041004{
    1005     RTCCUINTREG uFlags    = ASMIntDisableFlags();
     1005    RTCCUINTREG fEFlags   = ASMIntDisableFlags();
    10061006    uint64_t   *puTscStop = (uint64_t *)pvUser1;
    10071007    uint64_t   *pnsStop   = (uint64_t *)pvUser2;
     
    10101010    *pnsStop   = RTTimeSystemNanoTS();
    10111011
    1012     ASMSetFlags(uFlags);
     1012    ASMSetFlags(fEFlags);
    10131013}
    10141014
     
    10361036    while (cTriesLeft-- > 0)
    10371037    {
    1038         RTCCUINTREG uFlags;
     1038        RTCCUINTREG fEFlags;
    10391039        uint64_t    nsStart;
    10401040        uint64_t    nsStop;
     
    10551055         * Read the TSC and current time, noting which CPU we're on.
    10561056         */
    1057         uFlags = ASMIntDisableFlags();
     1057        fEFlags = ASMIntDisableFlags();
    10581058        uTscStart   = ASMReadTSC();
    10591059        nsStart     = RTTimeSystemNanoTS();
    10601060        idCpuStart  = RTMpCpuId();
    1061         ASMSetFlags(uFlags);
     1061        ASMSetFlags(fEFlags);
    10621062
    10631063        /*
     
    10981098         * Read the TSC and time again.
    10991099         */
    1100         uFlags = ASMIntDisableFlags();
     1100        fEFlags = ASMIntDisableFlags();
    11011101        uTscStop    = ASMReadTSC();
    11021102        nsStop      = RTTimeSystemNanoTS();
    11031103        idCpuStop   = RTMpCpuId();
    1104         ASMSetFlags(uFlags);
     1104        ASMSetFlags(fEFlags);
    11051105
    11061106        /*
     
    28282828}
    28292829
    2830 #define TSCDELTA_MASTER_SYNC_BEFORE(a_pMySync, a_pOtherSync) \
    2831     if (true) { \
    2832         if (RT_LIKELY(supdrvTscDeltaSync2_Before(a_pMySync, a_pOtherSync, true /*fMaster*/, &uFlags))) \
    2833         { /*likely*/ } \
    2834         else break; \
    2835     } else do {} while (0)
    2836 #define TSCDELTA_OTHER_SYNC_BEFORE(a_pMySync, a_pOtherSync) \
    2837     if (true) { \
    2838         if (RT_LIKELY(supdrvTscDeltaSync2_Before(a_pMySync, a_pOtherSync, false /*fMaster*/, &uFlags))) \
    2839         { /*likely*/ } \
    2840         else break; \
    2841     } else do {} while (0)
     2830#define TSCDELTA_MASTER_SYNC_BEFORE(a_pMySync, a_pOtherSync, a_pfEFlags) \
     2831    if (RT_LIKELY(supdrvTscDeltaSync2_Before(a_pMySync, a_pOtherSync, true /*fMaster*/, a_pfEFlags))) \
     2832    { /*likely*/ } \
     2833    else break
     2834#define TSCDELTA_OTHER_SYNC_BEFORE(a_pMySync, a_pOtherSync, a_pfEFlags) \
     2835    if (RT_LIKELY(supdrvTscDeltaSync2_Before(a_pMySync, a_pOtherSync, false /*fMaster*/, a_pfEFlags))) \
     2836    { /*likely*/ } \
     2837    else break
    28422838
    28432839
     
    28672863}
    28682864
    2869 #define TSCDELTA_MASTER_SYNC_AFTER(a_pMySync, a_pOtherSync) \
    2870     if (true) { \
    2871         if (RT_LIKELY(supdrvTscDeltaSync2_After(a_pMySync, a_pOtherSync, uFlags))) \
    2872         { /* likely */ } \
    2873         else break; \
    2874     } else do {} while (0)
     2865#define TSCDELTA_MASTER_SYNC_AFTER(a_pMySync, a_pOtherSync, a_fEFlags) \
     2866    if (RT_LIKELY(supdrvTscDeltaSync2_After(a_pMySync, a_pOtherSync, a_fEFlags))) \
     2867    { /* likely */ } \
     2868    else break
    28752869
    28762870#define TSCDELTA_MASTER_KICK_OTHER_OUT_OF_AFTER(a_pMySync, a_pOtherSync) \
    2877     if (true) { \
    2878         /* \
    2879          * Tell the worker that we're done processing the data and ready for the next round. \
    2880          */ \
    2881         if (RT_LIKELY(ASMAtomicCmpXchgU32(&(a_pOtherSync)->uSyncVar, GIP_TSC_DELTA_SYNC2_READY, GIP_TSC_DELTA_SYNC2_GO))) \
    2882         { /* likely */ } \
    2883         else break; \
    2884     } else do {} while (0)
    2885 
    2886 #define TSCDELTA_OTHER_SYNC_AFTER(a_pMySync, a_pOtherSync) \
     2871    /* \
     2872     * Tell the worker that we're done processing the data and ready for the next round. \
     2873     */ \
     2874    if (RT_LIKELY(ASMAtomicCmpXchgU32(&(a_pOtherSync)->uSyncVar, GIP_TSC_DELTA_SYNC2_READY, GIP_TSC_DELTA_SYNC2_GO))) \
     2875    { /* likely */ } \
     2876    else break
     2877
     2878#define TSCDELTA_OTHER_SYNC_AFTER(a_pMySync, a_pOtherSync, a_fEFlags) \
    28872879    if (true) { \
    28882880        /* \
     
    28932885        else \
    28942886        { \
    2895             ASMSetFlags(uFlags); \
     2887            ASMSetFlags(a_fEFlags); \
    28962888            break; \
    28972889        } \
    2898         if (RT_LIKELY(supdrvTscDeltaSync2_After(a_pMySync, a_pOtherSync, uFlags))) \
     2890        if (RT_LIKELY(supdrvTscDeltaSync2_After(a_pMySync, a_pOtherSync, a_fEFlags))) \
    28992891        { /* likely */ } \
    29002892        else break; \
     
    29472939    for (iLoop = 0; iLoop < GIP_TSC_DELTA_LOOPS; iLoop++)
    29482940    {
    2949         RTCCUINTREG uFlags;
     2941        RTCCUINTREG fEFlags;
    29502942        if (fIsMaster)
    29512943        {
     
    29562948                      ("%#llx idMaster=%#x idWorker=%#x (idGipMaster=%#x)\n",
    29572949                       pGipCpuMaster->u64TSCSample, pGipCpuMaster->idCpu, pGipCpuWorker->idCpu, pArgs->pDevExt->idGipMaster));
    2958             TSCDELTA_MASTER_SYNC_BEFORE(pMySync, pOtherSync);
     2950            TSCDELTA_MASTER_SYNC_BEFORE(pMySync, pOtherSync, &fEFlags);
    29592951
    29602952            do
     
    29642956            } while (pGipCpuMaster->u64TSCSample == GIP_TSC_DELTA_RSVD);
    29652957
    2966             TSCDELTA_MASTER_SYNC_AFTER(pMySync, pOtherSync);
     2958            TSCDELTA_MASTER_SYNC_AFTER(pMySync, pOtherSync, fEFlags);
    29672959
    29682960            /* Process the data. */
     
    29942986
    29952987            ASMAtomicReadU64(&pGipCpuMaster->u64TSCSample);     /* Warm the cache line. */
    2996             TSCDELTA_OTHER_SYNC_BEFORE(pMySync, pOtherSync);
     2988            TSCDELTA_OTHER_SYNC_BEFORE(pMySync, pOtherSync, &fEFlags);
    29972989
    29982990            /*
     
    30293021            }
    30303022
    3031             TSCDELTA_OTHER_SYNC_AFTER(pMySync, pOtherSync);
     3023            TSCDELTA_OTHER_SYNC_AFTER(pMySync, pOtherSync, fEFlags);
    30323024        }
    30333025    }
     
    32153207    for (iLoop = 0; iLoop < GIP_TSC_DELTA_M2_LOOPS; iLoop++)
    32163208    {
    3217         RTCCUINTREG uFlags;
     3209        RTCCUINTREG fEFlags;
    32183210        if (fIsMaster)
    32193211        {
     
    32523244             * Sync up with the worker and collect data.
    32533245             */
    3254             TSCDELTA_MASTER_SYNC_BEFORE(pMySync, pOtherSync);
     3246            TSCDELTA_MASTER_SYNC_BEFORE(pMySync, pOtherSync, &fEFlags);
    32553247            supdrvTscDeltaMethod2CollectData(pArgs->M2.pMasterData, &pArgs->M2.pWorkerData->iCurSeqNo, pArgs->M2.fLagMaster);
    3256             TSCDELTA_MASTER_SYNC_AFTER(pMySync, pOtherSync);
     3248            TSCDELTA_MASTER_SYNC_AFTER(pMySync, pOtherSync, fEFlags);
    32573249
    32583250            /*
     
    32713263             * The worker.
    32723264             */
    3273             TSCDELTA_OTHER_SYNC_BEFORE(pMySync, pOtherSync);
     3265            TSCDELTA_OTHER_SYNC_BEFORE(pMySync, pOtherSync, &fEFlags);
    32743266            supdrvTscDeltaMethod2CollectData(pArgs->M2.pWorkerData, &pArgs->M2.pMasterData->iCurSeqNo, pArgs->M2.fLagWorker);
    3275             TSCDELTA_OTHER_SYNC_AFTER(pMySync, pOtherSync);
     3267            TSCDELTA_OTHER_SYNC_AFTER(pMySync, pOtherSync, fEFlags);
    32763268        }
    32773269
     
    33313323    for (;;)
    33323324    {
    3333         RTCCUINTREG uFlags;
     3325        RTCCUINTREG fEFlags;
    33343326        AssertCompile((RT_ELEMENTS(pArgs->auVerifyMasterTscs) & 1) == 0);
    33353327        AssertCompile(RT_ELEMENTS(pArgs->auVerifyWorkerTscs) == RT_ELEMENTS(pArgs->auVerifyMasterTscs));
     
    33383330        {
    33393331            uint64_t uTscWorker;
    3340             TSCDELTA_MASTER_SYNC_BEFORE(pMySync, pOtherSync);
     3332            TSCDELTA_MASTER_SYNC_BEFORE(pMySync, pOtherSync, &fEFlags);
    33413333
    33423334            /*
     
    33703362            }
    33713363
    3372             TSCDELTA_MASTER_SYNC_AFTER(pMySync, pOtherSync);
     3364            TSCDELTA_MASTER_SYNC_AFTER(pMySync, pOtherSync, fEFlags);
    33733365
    33743366            /*
     
    34333425             * The worker, master leads.
    34343426             */
    3435             TSCDELTA_OTHER_SYNC_BEFORE(pMySync, pOtherSync);
     3427            TSCDELTA_OTHER_SYNC_BEFORE(pMySync, pOtherSync, &fEFlags);
    34363428
    34373429            for (i = 0; i < RT_ELEMENTS(pArgs->auVerifyWorkerTscs); i += 2)
     
    34643456            }
    34653457
    3466             TSCDELTA_OTHER_SYNC_AFTER(pMySync, pOtherSync);
     3458            TSCDELTA_OTHER_SYNC_AFTER(pMySync, pOtherSync, fEFlags);
    34673459        }
    34683460        return pArgs->rcVerify;
     
    46714663             * while we do that.
    46724664             */
    4673             RTCCUINTREG uFlags = ASMIntDisableFlags();
     4665            RTCCUINTREG fEFlags = ASMIntDisableFlags();
    46744666            int         iCpuSet = RTMpCpuIdToSetIndex(RTMpCpuId());
    46754667            int         iGipCpu;
     
    46804672                pReq->u.Out.idApic = pGip->aCPUs[iGipCpu].idApic;
    46814673                pReq->u.Out.u64AdjustedTsc = ASMReadTSC();
    4682                 ASMSetFlags(uFlags);
     4674                ASMSetFlags(fEFlags);
    46834675
    46844676                /*
     
    47124704                pReq->u.Out.idApic = ASMGetApicId();
    47134705                pReq->u.Out.u64AdjustedTsc = ASMReadTSC();
    4714                 ASMSetFlags(uFlags);
     4706                ASMSetFlags(fEFlags);
    47154707                rc = VERR_INTERNAL_ERROR_5; /** @todo change to warning. */
    47164708                break;
     
    47234715         * No delta to apply. Easy. Deal with preemption the lazy way.
    47244716         */
    4725         RTCCUINTREG uFlags = ASMIntDisableFlags();
     4717        RTCCUINTREG fEFlags = ASMIntDisableFlags();
    47264718        int         iCpuSet = RTMpCpuIdToSetIndex(RTMpCpuId());
    47274719        int         iGipCpu;
     
    47324724            pReq->u.Out.idApic = ASMGetApicId();
    47334725        pReq->u.Out.u64AdjustedTsc = ASMReadTSC();
    4734         ASMSetFlags(uFlags);
     4726        ASMSetFlags(fEFlags);
    47354727        rc = VINF_SUCCESS;
    47364728    }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette