VirtualBox

Changeset 17328 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Mar 4, 2009 9:00:34 AM (16 years ago)
Author:
vboxsync
Message:

Deal with failed VINF_EM_RAW_EMULATE_IO_BLOCK attempts. Pointless to go back to ring 3.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp

    r16567 r17328  
    13931393            STAM_COUNTER_INC(&pStats->CTX_SUFF_Z(Write));
    13941394#endif
     1395#ifdef IN_RING0
     1396        if (    rc == VINF_EM_RAW_EMULATE_IO_BLOCK
     1397            &&  !HWACCMCanEmulateIoBlock(pVM))
     1398        {
     1399            /* Failed io emulation block attempt; just retry (a switch to ring 3 would jump right back) */
     1400# ifdef VBOX_WITH_STATISTICS
     1401            STAM_PROFILE_ADV_START(&pStats->CTX_SUFF_Z(ProfWrite), a);
     1402            STAM_COUNTER_INC(&pStats->IOEmulateFailedR0);
     1403# endif
     1404            int rc = pRange->CTX_SUFF(pfnWriteCallback)(pRange->CTX_SUFF(pDevIns), pRange->CTX_SUFF(pvUser), GCPhys, &u32Value, (unsigned)cbValue);
     1405# ifdef VBOX_WITH_STATISTICS
     1406            STAM_PROFILE_ADV_STOP(&pStats->CTX_SUFF_Z(ProfWrite), a);
     1407            if (rc != VINF_IOM_HC_MMIO_WRITE)
     1408                STAM_COUNTER_INC(&pStats->CTX_SUFF_Z(Write));
     1409# endif
     1410        }
     1411#endif
    13951412        Log4(("IOMMMIOWrite: GCPhys=%RGp u32=%08RX32 cb=%d rc=%Rrc\n", GCPhys, u32Value, cbValue, rc));
    13961413        return rc;
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