VirtualBox

Changeset 74785 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Oct 12, 2018 10:14:19 AM (6 years ago)
Author:
vboxsync
Message:

vm.h,VMM: Use VMCPU_FF_IS_SET instead of VMCPU_FF_IS_PENDING when checking a single flag. Added compile time assertion on single flag. bugref:9180

Location:
trunk/src/VBox/VMM/VMMR3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/DBGF.cpp

    r73414 r74785  
    299299                       unfortunately required by plugin unloading. */
    300300                    if (   VM_FF_IS_PENDING(pVM, VM_FF_REQUEST)
    301                         || VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_REQUEST))
     301                        || VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_REQUEST))
    302302                    {
    303303                        LogFlow(("DBGFR3PowerOff: Processes priority requests...\n"));
     
    392392        /* Process priority stuff. */
    393393        if (   VM_FF_IS_PENDING(pVM, VM_FF_REQUEST)
    394             || VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_REQUEST))
     394            || VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_REQUEST))
    395395        {
    396396            int rc = VMR3ReqProcessU(pVM->pUVM, VMCPUID_ANY, true /*fPriorityOnly*/);
     
    835835            int rc;
    836836            if (    !VM_FF_IS_PENDING(pVM, VM_FF_EMT_RENDEZVOUS | VM_FF_REQUEST)
    837                 &&  !VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_REQUEST))
     837                &&  !VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_REQUEST))
    838838            {
    839839                rc = RTSemPingWait(&pVM->dbgf.s.PingPong, cPollHack);
     
    853853            }
    854854            else if (   VM_FF_IS_PENDING(pVM, VM_FF_REQUEST)
    855                      || VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_REQUEST))
     855                     || VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_REQUEST))
    856856            {
    857857                LogFlow(("dbgfR3VMMWait: Processes requests...\n"));
  • trunk/src/VBox/VMM/VMMR3/EM.cpp

    r73617 r74785  
    16501650    VBOXVMM_EM_FF_HIGH(pVCpu, pVM->fGlobalForcedActions, pVCpu->fLocalForcedActions, VBOXSTRICTRC_VAL(rc));
    16511651
    1652     if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_PDM_CRITSECT))
     1652    if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_PDM_CRITSECT))
    16531653        PDMCritSectBothFF(pVCpu);
    16541654
    16551655    /* Update CR3 (Nested Paging case for HM). */
    1656     if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_HM_UPDATE_CR3))
     1656    if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_HM_UPDATE_CR3))
    16571657    {
    16581658        CPUM_IMPORT_EXTRN_RCSTRICT(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_CR3 | CPUMCTX_EXTRN_CR4 | CPUMCTX_EXTRN_EFER, rc);
     
    16601660        if (RT_FAILURE(rc2))
    16611661            return rc2;
    1662         Assert(!VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_HM_UPDATE_CR3));
     1662        Assert(!VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_HM_UPDATE_CR3));
    16631663    }
    16641664
    16651665    /* Update PAE PDPEs. This must be done *after* PGMUpdateCR3() and used only by the Nested Paging case for HM. */
    1666     if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_HM_UPDATE_PAE_PDPES))
     1666    if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_HM_UPDATE_PAE_PDPES))
    16671667    {
    16681668        CPUM_IMPORT_EXTRN_RCSTRICT(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_CR3 | CPUMCTX_EXTRN_CR4 | CPUMCTX_EXTRN_EFER, rc);
     
    16731673
    16741674            PGMGstUpdatePaePdpes(pVCpu, pPdpes);
    1675             Assert(!VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_HM_UPDATE_PAE_PDPES));
     1675            Assert(!VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_HM_UPDATE_PAE_PDPES));
    16761676        }
    16771677        else
     
    16801680
    16811681    /* IEM has pending work (typically memory write after INS instruction). */
    1682     if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_IEM))
     1682    if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_IEM))
    16831683        rc = IEMR3ProcessForceFlag(pVM, pVCpu, rc);
    16841684
    16851685    /* IOM has pending work (comitting an I/O or MMIO write). */
    1686     if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_IOM))
     1686    if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_IOM))
    16871687    {
    16881688        rc = IOMR3ProcessForceFlag(pVM, pVCpu, rc);
     
    16961696
    16971697#ifdef VBOX_WITH_RAW_MODE
    1698     if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_CSAM_PENDING_ACTION))
     1698    if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_CSAM_PENDING_ACTION))
    16991699        CSAMR3DoPendingAction(pVM, pVCpu);
    17001700#endif
     
    17791779            }
    17801780
    1781             if (   VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_NESTED_GUEST)
     1781            if (   VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_INTERRUPT_NESTED_GUEST)
    17821782                && CPUMCanSvmNstGstTakeVirtIntr(pVCpu, &pVCpu->cpum.GstCtx))
    17831783            {
     
    19161916         * Debugger Facility polling.
    19171917         */
    1918         if (   VM_FF_IS_PENDING(pVM, VM_FF_DBGF)
    1919             || VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_DBGF) )
     1918        if (   VM_FF_IS_SET(pVM, VM_FF_DBGF)
     1919            || VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_DBGF) )
    19201920        {
    19211921            CPUM_IMPORT_EXTRN_RCSTRICT(pVCpu, ~CPUMCTX_EXTRN_KEEPER_MASK, rc);
     
    19381938         * CSAM page scanning.
    19391939         */
    1940         if (    !VM_FF_IS_PENDING(pVM, VM_FF_PGM_NO_MEMORY)
    1941             &&  VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_CSAM_SCAN_PAGE))
     1940        if (    !VM_FF_IS_SET(pVM, VM_FF_PGM_NO_MEMORY)
     1941            &&  VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_CSAM_SCAN_PAGE))
    19421942        {
    19431943            /** @todo check for 16 or 32 bits code! (D bit in the code selector) */
     
    20562056     * (Executed in no particular order.)
    20572057     */
    2058     if (    !VM_FF_IS_PENDING(pVM, VM_FF_PGM_NO_MEMORY)
     2058    if (    !VM_FF_IS_SET(pVM, VM_FF_PGM_NO_MEMORY)
    20592059        &&  VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_NORMAL_PRIORITY_MASK))
    20602060    {
     
    20622062         * Requests from other threads.
    20632063         */
    2064         if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_REQUEST))
     2064        if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_REQUEST))
    20652065        {
    20662066            CPUM_IMPORT_EXTRN_RCSTRICT(pVCpu, ~CPUMCTX_EXTRN_KEEPER_MASK, rc);
     
    21002100         * Timers before interrupts.
    21012101         */
    2102         if (    VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_TIMER)
     2102        if (    VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_TIMER)
    21032103            &&  !VM_FF_IS_PENDING(pVM, VM_FF_PGM_NO_MEMORY))
    21042104            TMR3TimerQueuesDo(pVM);
     
    21222122         *       you might think.
    21232123         */
    2124         if (    VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS)
     2124        if (    VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS)
    21252125            &&  !VM_FF_IS_PENDING(pVM, VM_FF_PGM_NO_MEMORY))
    21262126        {
     
    21422142            &&  (!rc || rc >= VINF_EM_RESCHEDULE_HM))
    21432143        {
    2144             if (   !VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS)
     2144            if (   !VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS)
    21452145                && !TRPMHasTrap(pVCpu)) /* an interrupt could already be scheduled for dispatching in the recompiler. */
    21462146            {
     
    22102210         */
    22112211        if (   (   VM_FF_IS_PENDING(pVM, VM_FF_DBGF)
    2212                 || VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_DBGF) )
     2212                || VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_DBGF) )
    22132213            && !VM_FF_IS_PENDING(pVM, VM_FF_PGM_NO_MEMORY) )
    22142214        {
     
    27222722                if (   enmOldState == EMSTATE_HALTED
    27232723                    && (   (pVCpu->em.s.MWait.fWait & EMMWAIT_FLAG_ACTIVE)
    2724                         || VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_UNHALT))
     2724                        || VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_UNHALT))
    27252725                    && (   enmNewState == EMSTATE_RAW
    27262726                        || enmNewState == EMSTATE_HM
     
    27392739                        pVCpu->em.s.MWait.fWait &= ~(EMMWAIT_FLAG_ACTIVE | EMMWAIT_FLAG_BREAKIRQIF0);
    27402740                    }
    2741                     if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_UNHALT))
     2741                    if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_UNHALT))
    27422742                    {
    27432743                        LogFlow(("EMR3ExecuteVM: Clearing UNHALT\n"));
  • trunk/src/VBox/VMM/VMMR3/EMRaw.cpp

    r72634 r74785  
    11801180     * PGMSyncCR3+pgmR3PoolClearAll is pending.
    11811181     */
    1182     if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_TRPM_SYNC_IDT))
    1183     {
    1184         if (   VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_PGM_SYNC_CR3)
     1182    if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_TRPM_SYNC_IDT))
     1183    {
     1184        if (   VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3)
    11851185            && EMIsRawRing0Enabled(pVM)
    11861186            && CSAMIsEnabled(pVM))
     
    11991199     * Sync TSS.
    12001200     */
    1201     if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_SELM_SYNC_TSS))
     1201    if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_SELM_SYNC_TSS))
    12021202    {
    12031203        int rc = SELMR3SyncTSS(pVM, pVCpu);
  • trunk/src/VBox/VMM/VMMR3/VMM.cpp

    r73481 r74785  
    28452845     * when entering other critsects here.
    28462846     */
    2847     if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_PDM_CRITSECT))
     2847    if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_PDM_CRITSECT))
    28482848        PDMCritSectBothFF(pVCpu);
    28492849
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