@@ -16,6 +16,7 @@
#include <linux/aer.h>
#include <linux/acpi.h>
#include <linux/irqdomain.h>
+#include <linux/iommu.h>
#include "pci.h"
#define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */
@@ -2160,6 +2161,9 @@ struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
pci_set_bus_of_node(b);
pci_set_bus_msi_domain(b);
+ if (iommu_capable(&pci_bus_type, IOMMU_CAP_INTR_REMAP))
+ b->bus_flags |= PCI_BUS_FLAGS_MSI_REMAP;
+
if (!parent)
set_dev_node(b->bridge, pcibus_to_node(b));
The capability of IRQ remapping is abstracted on IOMMU side on some archs. There is a existing flag IOMMU_CAP_INTR_REMAP for this. To have a universal flag to test this capability for different archs on PCI side, we set PCI_BUS_FLAGS_MSI_REMAP for PCI buses when IOMMU_CAP_INTR_REMAP is set. Signed-off-by: Yongji Xie <xyjxie@linux.vnet.ibm.com> --- drivers/pci/probe.c | 4 ++++ 1 file changed, 4 insertions(+)