Index: sys/dev/pci/pci_host_generic_acpi.c =================================================================== --- sys/dev/pci/pci_host_generic_acpi.c +++ sys/dev/pci/pci_host_generic_acpi.c @@ -39,13 +39,17 @@ #include #include #include +#include #include +#include #include #include #include #include #include #include +#include +#include #include #include @@ -58,10 +62,12 @@ #include #include #include +#include #include #include #include +#include #include "pcib_if.h" #include "acpi_bus_if.h" @@ -391,13 +397,24 @@ generic_pcie_acpi_map_msi(device_t pci, device_t child, int irq, uint64_t *addr, uint32_t *data) { + int error; #if defined(INTRNG) - return (intr_map_msi(pci, child, generic_pcie_get_xref(pci, child), irq, - addr, data)); + error = intr_map_msi(pci, child, generic_pcie_get_xref(pci, child), irq, + addr, data); + if (error) + return (error); #else return (ENXIO); #endif + +#if defined(ACPI_SMMU) + error = smmu_map_msi(child, *addr); + if (error) + return (error); +#endif + + return (0); } static int