VirtualBox

Ignore:
Timestamp:
Jun 12, 2020 6:49:41 AM (5 years ago)
Author:
vboxsync
Message:

AMD IOMMU: bugref:9654 Use the proper PCI bus number. Not the Bus array index.

File:
1 edited

Legend:

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

    r84755 r84809  
    158158        && pDevInsIommu != pDevIns)
    159159    {
     160        size_t const idxBus = pPciDev->Int.s.idxPdmBus;
     161        Assert(idxBus < RT_ELEMENTS(pGVM->pdmr0.s.aPciBuses));
     162        PPDMPCIBUSR0 pBus = &pGVM->pdmr0.s.aPciBuses[idxBus];
     163
    160164        RTGCPHYS GCPhysOut;
    161         uint16_t const uDeviceId = VBOX_PCI_BUSDEVFN_MAKE(pPciDev->Int.s.idxPdmBus, pPciDev->uDevFn);
     165        uint16_t const uDeviceId = VBOX_PCI_BUSDEVFN_MAKE(pBus->iBus, pPciDev->uDevFn);
    162166        int rc = pIommu->pfnMemRead(pDevInsIommu, uDeviceId, GCPhys, cbRead, &GCPhysOut);
    163167        if (RT_FAILURE(rc))
     
    206210        && pDevInsIommu != pDevIns)
    207211    {
     212        size_t const idxBus = pPciDev->Int.s.idxPdmBus;
     213        Assert(idxBus < RT_ELEMENTS(pGVM->pdmr0.s.aPciBuses));
     214        PPDMPCIBUSR0 pBus = &pGVM->pdmr0.s.aPciBuses[idxBus];
     215
    208216        RTGCPHYS GCPhysOut;
    209         uint16_t const uDeviceId = VBOX_PCI_BUSDEVFN_MAKE(pPciDev->Int.s.idxPdmBus, pPciDev->uDevFn);
     217        uint16_t const uDeviceId = VBOX_PCI_BUSDEVFN_MAKE(pBus->iBus, pPciDev->uDevFn);
    210218        int rc = pIommu->pfnMemWrite(pDevInsIommu, uDeviceId, GCPhys, cbWrite, &GCPhysOut);
    211219        if (RT_FAILURE(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