VirtualBox

Changeset 88640 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Apr 22, 2021 6:15:35 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
143953
Message:

Intel IOMMU: bugref:9967 Implement PDM R3-task queueing for sending MSIs via the IOAPIC in ring-0.

File:
1 edited

Legend:

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

    r88639 r88640  
    16271627    if (pGVM->pdm.s.IoApic.pDevInsR0)
    16281628        pGVM->pdm.s.IoApic.pfnSendMsiR0(pGVM->pdm.s.IoApic.pDevInsR0, uBusDevFn, pMsi, uTagSrc);
    1629     else
    1630         AssertFatalMsgFailed(("Lazy bastards!"));
     1629    else if (pGVM->pdm.s.IoApic.pDevInsR3)
     1630    {
     1631        /* queue for ring-3 execution. */
     1632        PPDMDEVHLPTASK pTask = (PPDMDEVHLPTASK)PDMQueueAlloc(pGVM->pdm.s.pDevHlpQueueR0);
     1633        if (pTask)
     1634        {
     1635            pTask->enmOp = PDMDEVHLPTASKOP_IOAPIC_SEND_MSI;
     1636            pTask->pDevInsR3 = NIL_RTR3PTR; /* not required */
     1637            pTask->u.IoApicSendMsi.uBusDevFn = uBusDevFn;
     1638            pTask->u.IoApicSendMsi.Msi       = *pMsi;
     1639            pTask->u.IoApicSendMsi.uTagSrc   = uTagSrc;
     1640
     1641            PDMQueueInsertEx(pGVM->pdm.s.pDevHlpQueueR0, &pTask->Core, 0);
     1642        }
     1643        else
     1644            AssertMsgFailed(("We're out of devhlp queue items!!!\n"));
     1645    }
    16311646}
    16321647
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