VirtualBox

Changeset 46918 in vbox


Ignore:
Timestamp:
Jul 2, 2013 5:45:04 PM (12 years ago)
Author:
vboxsync
Message:

EM.cpp: fIemExecutesAll fixes.

File:
1 edited

Legend:

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

    r46780 r46918  
    18381838                /** @todo this really isn't nice, should properly handle this */
    18391839                rc2 = TRPMR3InjectEvent(pVM, pVCpu, TRPM_HARDWARE_INT);
     1840                if (pVM->em.s.fIemExecutesAll && rc2 == VINF_EM_RESCHEDULE_REM)
     1841                    rc2 = VINF_EM_RESCHEDULE;
    18401842#ifdef VBOX_STRICT
    18411843                rcIrq = rc2;
     
    18491851            else if (REMR3QueryPendingInterrupt(pVM, pVCpu) != REM_NO_PENDING_IRQ)
    18501852            {
     1853                Log2(("REMR3QueryPendingInterrupt -> %#x\n", REMR3QueryPendingInterrupt(pVM, pVCpu)));
    18511854                rc2 = VINF_EM_RESCHEDULE_REM;
    18521855                UPDATE_RC();
     
    20502053        else
    20512054            pVCpu->em.s.enmState = emR3Reschedule(pVM, pVCpu, pVCpu->em.s.pCtx);
     2055        Log(("EMR3ExecuteVM: enmState=%s\n", emR3GetStateName(pVCpu->em.s.enmState)));
    20522056
    20532057        STAM_REL_PROFILE_ADV_START(&pVCpu->em.s.StatTotal, x);
     
    20972101                case VINF_EM_RESCHEDULE_RAW:
    20982102                    Log2(("EMR3ExecuteVM: VINF_EM_RESCHEDULE_RAW: %d -> %d (EMSTATE_RAW)\n", enmOldState, EMSTATE_RAW));
    2099                     pVCpu->em.s.enmState = EMSTATE_RAW;
     2103                    Assert(!pVM->em.s.fIemExecutesAll || pVCpu->em.s.enmState != EMSTATE_IEM);
    21002104                    break;
    21012105
     
    21052109                case VINF_EM_RESCHEDULE_HM:
    21062110                    Log2(("EMR3ExecuteVM: VINF_EM_RESCHEDULE_HM: %d -> %d (EMSTATE_HM)\n", enmOldState, EMSTATE_HM));
     2111                    Assert(!pVM->em.s.fIemExecutesAll || pVCpu->em.s.enmState != EMSTATE_IEM);
    21072112                    Assert(!pVCpu->em.s.fForceRAW);
    21082113                    pVCpu->em.s.enmState = EMSTATE_HM;
     
    21142119                case VINF_EM_RESCHEDULE_REM:
    21152120                    Log2(("EMR3ExecuteVM: VINF_EM_RESCHEDULE_REM: %d -> %d (EMSTATE_REM)\n", enmOldState, EMSTATE_REM));
     2121                    Assert(!pVM->em.s.fIemExecutesAll || pVCpu->em.s.enmState != EMSTATE_IEM);
    21162122                    pVCpu->em.s.enmState = EMSTATE_REM;
    21172123                    break;
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