VirtualBox

Changeset 89098 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
May 17, 2021 1:58:09 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
144439
Message:

Intel IOMMU: bugref:9967 ConsoleImpl2, DevIoApic: When Main configures the PCI address of the I/O APIC to the BusAssignmentManager, pass it on to the I/O APIC device as well.
This will allow us to use different PCI addresses for AMD and Intel IOMMUs if required.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/DevIoApic.cpp

    r89071 r89098  
    265265    /** The I/O APIC chipset type. */
    266266    IOAPICTYPE              enmType;
     267    /** The I/O APIC PCI address. */
     268    PCIBDF                  uPciAddress;
     269    /** Padding. */
     270    uint32_t                uPadding0;
    267271
    268272#ifndef IOAPIC_WITH_PDM_CRITSECT
     
    616620
    617621    MSIMSG MsiOut;
    618     int const rcRemap = pThisCC->pIoApicHlp->pfnIommuMsiRemap(pDevIns, VBOX_PCI_BDF_SB_IOAPIC, &MsiIn, &MsiOut);
     622    int const rcRemap = pThisCC->pIoApicHlp->pfnIommuMsiRemap(pDevIns, pThis->uPciAddress, &MsiIn, &MsiOut);
    619623    if (   rcRemap == VERR_IOMMU_NOT_PRESENT
    620624        || rcRemap == VERR_IOMMU_CANNOT_CALL_SELF)
     
    15151519     * Validate and read the configuration.
    15161520     */
    1517     PDMDEV_VALIDATE_CONFIG_RETURN(pDevIns, "NumCPUs|ChipType", "");
     1521    PDMDEV_VALIDATE_CONFIG_RETURN(pDevIns, "NumCPUs|ChipType|PCIAddress", "");
    15181522
    15191523    /* The number of CPUs is currently unused, but left in CFGM and saved-state in case an ID of 0
     
    15291533    if (RT_FAILURE(rc))
    15301534        return PDMDEV_SET_ERROR(pDevIns, rc, N_("Configuration error: Failed to query string value \"ChipType\""));
     1535
     1536    rc = pHlp->pfnCFGMQueryU32Def(pCfg, "PCIAddress", &pThis->uPciAddress, NIL_PCIBDF);
     1537    if (RT_FAILURE(rc))
     1538        return PDMDEV_SET_ERROR(pDevIns, rc, N_("Configuration error: Failed to query 32-bit integer \"PCIAddress\""));
    15311539
    15321540    if (!strcmp(szChipType, "ICH9"))
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