VirtualBox

Changeset 60850 in vbox for trunk/src/VBox


Ignore:
Timestamp:
May 5, 2016 3:43:19 PM (9 years ago)
Author:
vboxsync
Message:

HM: Dropped HMR0SavePendingIOPortWrite and associated code (leaving HMR0SavePendingIOPortRead), since IOMIOPortWrite won't be returning VINF_IOM_R3_IOPORT_WRITE any more but rather VINF_IOM_R3_IOPORT_COMMIT_WRITE.

Location:
trunk/src/VBox/VMM
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMR0.cpp

    r60847 r60850  
    16261626    pVCpu->hm.s.PendingIO.s.Port.uAndVal  = uAndVal;
    16271627    pVCpu->hm.s.PendingIO.s.Port.cbSize   = cbSize;
    1628 /** @todo IOM will do this stuff, retire the HM feature.   */
    1629     return;
    1630 }
    1631 
    1632 
    1633 /**
    1634  * Save a pending IO write.
    1635  *
    1636  * @param   pVCpu           The cross context virtual CPU structure.
    1637  * @param   GCPtrRip        Address of IO instruction.
    1638  * @param   GCPtrRipNext    Address of the next instruction.
    1639  * @param   uPort           Port address.
    1640  * @param   uAndVal         AND mask for fetching the result from eax.
    1641  * @param   cbSize          Read size.
    1642  */
    1643 VMMR0_INT_DECL(void) HMR0SavePendingIOPortWrite(PVMCPU pVCpu, RTGCPTR GCPtrRip, RTGCPTR GCPtrRipNext,
    1644                                                 unsigned uPort, unsigned uAndVal, unsigned cbSize)
    1645 {
    1646     pVCpu->hm.s.PendingIO.enmType         = HMPENDINGIO_PORT_WRITE;
    1647     pVCpu->hm.s.PendingIO.GCPtrRip        = GCPtrRip;
    1648     pVCpu->hm.s.PendingIO.GCPtrRipNext    = GCPtrRipNext;
    1649     pVCpu->hm.s.PendingIO.s.Port.uPort    = uPort;
    1650     pVCpu->hm.s.PendingIO.s.Port.uAndVal  = uAndVal;
    1651     pVCpu->hm.s.PendingIO.s.Port.cbSize   = cbSize;
    1652 /** @todo IOM will do this stuff, retire the HM feature.   */
    16531628    return;
    16541629}
  • trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp

    r60847 r60850  
    49294929        {
    49304930            rcStrict = IOMIOPortWrite(pVM, pVCpu, IoExitInfo.n.u16Port, pCtx->eax & uAndVal, cbValue);
    4931             if (rcStrict == VINF_IOM_R3_IOPORT_WRITE)
    4932                 HMR0SavePendingIOPortWrite(pVCpu, pCtx->rip, pVmcb->ctrl.u64ExitInfo2, IoExitInfo.n.u16Port, uAndVal, cbValue);
    4933 
    49344931            STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIOWrite);
    49354932        }
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r60847 r60850  
    1228712287        {
    1228812288            rcStrict = IOMIOPortWrite(pVM, pVCpu, uIOPort, pMixedCtx->eax & uAndVal, cbValue);
    12289             if (rcStrict == VINF_IOM_R3_IOPORT_WRITE)
    12290                 HMR0SavePendingIOPortWrite(pVCpu, pMixedCtx->rip, pMixedCtx->rip + cbInstr, uIOPort, uAndVal, cbValue);
    1229112289            STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIOWrite);
    1229212290        }
  • trunk/src/VBox/VMM/VMMR3/HM.cpp

    r60732 r60850  
    30833083VMMR3_INT_DECL(VBOXSTRICTRC) HMR3RestartPendingIOInstr(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx)
    30843084{
     3085    /*
     3086     * Check if we've got relevant data pending.
     3087     */
    30853088    HMPENDINGIO enmType = pVCpu->hm.s.PendingIO.enmType;
    3086 
     3089    if (enmType == HMPENDINGIO_INVALID)
     3090        return VERR_NOT_FOUND;
    30873091    pVCpu->hm.s.PendingIO.enmType = HMPENDINGIO_INVALID;
    3088 
    3089     if (    pVCpu->hm.s.PendingIO.GCPtrRip != pCtx->rip
    3090         ||  enmType  == HMPENDINGIO_INVALID)
     3092    if (pVCpu->hm.s.PendingIO.GCPtrRip != pCtx->rip)
    30913093        return VERR_NOT_FOUND;
    30923094
     3095    /*
     3096     * Execute pending I/O.
     3097     */
    30933098    VBOXSTRICTRC rcStrict;
    30943099    switch (enmType)
     
    31093114            break;
    31103115        }
    3111 
    3112         case HMPENDINGIO_PORT_WRITE:
    3113             rcStrict = IOMIOPortWrite(pVM, pVCpu, pVCpu->hm.s.PendingIO.s.Port.uPort,
    3114                                       pCtx->eax & pVCpu->hm.s.PendingIO.s.Port.uAndVal,
    3115                                       pVCpu->hm.s.PendingIO.s.Port.cbSize);
    3116             if (IOM_SUCCESS(rcStrict))
    3117                 pCtx->rip = pVCpu->hm.s.PendingIO.GCPtrRipNext;
    3118             break;
    31193116
    31203117        default:
  • trunk/src/VBox/VMM/include/HMInternal.h

    r60847 r60850  
    291291    HMPENDINGIO_INVALID = 0,
    292292    HMPENDINGIO_PORT_READ,
    293     HMPENDINGIO_PORT_WRITE,
    294     HMPENDINGIO_STRING_READ,
    295     HMPENDINGIO_STRING_WRITE,
     293    /* not implemented: HMPENDINGIO_STRING_READ, */
     294    /* not implemented: HMPENDINGIO_STRING_WRITE, */
    296295    /** The usual 32-bit paranoia. */
    297296    HMPENDINGIO_32BIT_HACK   = 0x7fffffff
     
    871870    } EmulateIoBlock;
    872871
    873     /** @todo IOM does this now, can be retired. */
     872    /* */
    874873    struct
    875874    {
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