VirtualBox

Changeset 60847 in vbox for trunk/src/VBox/VMM/VMMRC


Ignore:
Timestamp:
May 5, 2016 3:24:46 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
107055
Message:

IOM: New way of defer RC+R0 I/O port writes, prepping for MMIO writes.

Location:
trunk/src/VBox/VMM/VMMRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMRC/IOMRC.cpp

    r58123 r60847  
    135135 *                                      status code must be passed on to EM.
    136136 * @retval  VINF_IOM_R3_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only)
     137 * @retval  VINF_IOM_R3_IOPORT_COMMIT_WRITE Defer the write to ring-3. (R0/GC only)
    137138 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr)
    138139 * @retval  VINF_TRPM_XCPT_DISPATCHED   The exception was raised and dispatched for raw-mode execution. (TRPMRaiseXcptErr)
     
    170171         */
    171172        rcStrict = IOMIOPortWrite(pVM, pVCpu, uPort, u64Data, cbSize);
    172         AssertMsg(rcStrict == VINF_SUCCESS || rcStrict == VINF_IOM_R3_IOPORT_WRITE || (rcStrict >= VINF_EM_FIRST && rcStrict <= VINF_EM_LAST) || RT_FAILURE(rcStrict), ("%Rrc\n", VBOXSTRICTRC_VAL(rcStrict)));
     173        AssertMsg(rcStrict == VINF_SUCCESS || rcStrict == VINF_IOM_R3_IOPORT_WRITE || rcStrict == VINF_IOM_R3_IOPORT_COMMIT_WRITE
     174                  || (rcStrict >= VINF_EM_FIRST && rcStrict <= VINF_EM_LAST) || RT_FAILURE(rcStrict),
     175                  ("%Rrc\n", VBOXSTRICTRC_VAL(rcStrict)));
    173176    }
    174177    else
     
    242245 *                                      status code must be passed on to EM.
    243246 * @retval  VINF_IOM_R3_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only)
     247 * @retval  VINF_IOM_R3_IOPORT_COMMIT_WRITE    Defer the write to ring-3. (R0/GC only)
    244248 * @retval  VINF_EM_RAW_EMULATE_INSTR   Defer the write to the REM.
    245249 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr)
  • trunk/src/VBox/VMM/VMMRC/TRPMRCHandlers.cpp

    r60804 r60847  
    219219                                          | VMCPU_FF_PDM_CRITSECT  | VMCPU_FF_IEM            | VMCPU_FF_SELM_SYNC_GDT
    220220                                          | VMCPU_FF_SELM_SYNC_LDT | VMCPU_FF_SELM_SYNC_TSS  | VMCPU_FF_TRPM_SYNC_IDT
     221                                          | VMCPU_FF_IOM
    221222                                   )
    222223            )
     
    234235#endif
    235236            /* Pending Ring-3 action. */
    236             if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_TO_R3 | VMCPU_FF_PDM_CRITSECT | VMCPU_FF_IEM))
     237            if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_TO_R3 | VMCPU_FF_PDM_CRITSECT | VMCPU_FF_IEM | VMCPU_FF_IOM))
    237238            {
    238239                VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_TO_R3);
     
    12371238        case VINF_IOM_R3_IOPORT_READ:
    12381239        case VINF_IOM_R3_IOPORT_WRITE:
     1240        case VINF_IOM_R3_IOPORT_COMMIT_WRITE:
    12391241        case VINF_IOM_R3_MMIO_WRITE:
     1242        case VINF_IOM_R3_MMIO_COMMIT_WRITE:
    12401243        case VINF_IOM_R3_MMIO_READ:
    12411244        case VINF_IOM_R3_MMIO_READ_WRITE:
     
    13161319        case VINF_IOM_R3_MMIO_READ:
    13171320        case VINF_IOM_R3_MMIO_WRITE:
     1321        case VINF_IOM_R3_MMIO_COMMIT_WRITE:
    13181322        case VINF_IOM_R3_MMIO_READ_WRITE:
    13191323        case VINF_PATM_HC_MMIO_PATCH_READ:
Note: See TracChangeset for help on using the changeset viewer.

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