VirtualBox

Changeset 68470 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Aug 18, 2017 2:05:49 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
117615
Message:

PDM: add new PDM device helper for sending a MSI directly (from all contexts, as all contexts support such interrupt delivery)

File:
1 edited

Legend:

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

    r67668 r68470  
    18141814{
    18151815    pdmR3DevHlp_ISASetIrq(pDevIns, iIrq, iLevel);
     1816}
     1817
     1818
     1819/** @interface_method_impl{PDMDEVHLPR3,pfnIoApicSendMsi} */
     1820static DECLCALLBACK(void) pdmR3DevHlp_IoApicSendMsi(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, uint32_t uValue)
     1821{
     1822    PDMDEV_ASSERT_DEVINS(pDevIns);
     1823    LogFlow(("pdmR3DevHlp_IoApicSendMsi: caller='%s'/%d: GCPhys=%RGp uValue=%#x\n", pDevIns->pReg->szName, pDevIns->iInstance, GCPhys, uValue));
     1824
     1825    /*
     1826     * Validate input.
     1827     */
     1828    Assert(GCPhys != 0);
     1829    Assert(uValue != 0);
     1830
     1831    PVM pVM = pDevIns->Internal.s.pVMR3;
     1832
     1833    /*
     1834     * Do the job.
     1835     */
     1836    pdmLock(pVM);
     1837    uint32_t uTagSrc;
     1838    pDevIns->Internal.s.uLastIrqTag = uTagSrc = pdmCalcIrqTag(pVM, pDevIns->idTracing);
     1839    VBOXVMM_PDM_IRQ_HILO(VMMGetCpu(pVM), RT_LOWORD(uTagSrc), RT_HIWORD(uTagSrc));
     1840
     1841    PDMIoApicSendMsi(pVM, GCPhys, uValue, uTagSrc);  /* (The API takes the lock recursively.) */
     1842
     1843    pdmUnlock(pVM);
     1844
     1845    LogFlow(("pdmR3DevHlp_IoApicSendMsi: caller='%s'/%d: returns void\n", pDevIns->pReg->szName, pDevIns->iInstance));
     1846}
     1847
     1848
     1849/** @interface_method_impl{PDMDEVHLPR3,pfnIoApicSendMsiNoWait} */
     1850static DECLCALLBACK(void) pdmR3DevHlp_IoApicSendMsiNoWait(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, uint32_t uValue)
     1851{
     1852    pdmR3DevHlp_IoApicSendMsi(pDevIns, GCPhys, uValue);
    18161853}
    18171854
     
    36893726    pdmR3DevHlp_VMGetResumeReason,
    36903727    pdmR3DevHlp_MMIOExReduce,
    3691     0,
    3692     0,
     3728    pdmR3DevHlp_IoApicSendMsi,
     3729    pdmR3DevHlp_IoApicSendMsiNoWait,
    36933730    0,
    36943731    0,
     
    39463983    pdmR3DevHlp_VMGetResumeReason,
    39473984    pdmR3DevHlp_MMIOExReduce,
    3948     0,
    3949     0,
     3985    pdmR3DevHlp_IoApicSendMsi,
     3986    pdmR3DevHlp_IoApicSendMsiNoWait,
    39503987    0,
    39513988    0,
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