diff options
author | 2021-03-30 16:11:41 +0100 | |
---|---|---|
committer | 2021-04-20 14:11:22 +0100 | |
commit | 94e89b145371b68fa0ea294855adebcd03e0522e (patch) | |
tree | c616986f9cb8a0a90494fd4dc3ddb3d1973b31db /drivers/pci | |
parent | PCI/MSI: Kill default_teardown_msi_irqs() (diff) | |
download | linux-94e89b145371b68fa0ea294855adebcd03e0522e.tar.gz linux-94e89b145371b68fa0ea294855adebcd03e0522e.tar.bz2 linux-94e89b145371b68fa0ea294855adebcd03e0522e.zip |
PCI/MSI: Let PCI host bridges declare their reliance on MSI domains
There is a whole class of host bridges that cannot know whether
MSIs will be provided or not, as they rely on other blocks
to provide the MSI functionnality, using MSI domains. This is
the case for example on systems that use the ARM GIC architecture.
Introduce a new attribute ('msi_domain') indicating that implicit
dependency, and use this property to set the NO_MSI flag when
no MSI domain is found at probe time.
Link: https://lore.kernel.org/r/20210330151145.997953-11-maz@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/probe.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index fb04fc81a8bd..aa6fba35f5d1 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -925,6 +925,8 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge) device_enable_async_suspend(bus->bridge); pci_set_bus_of_node(bus); pci_set_bus_msi_domain(bus); + if (bridge->msi_domain && !dev_get_msi_domain(&bus->dev)) + bus->bus_flags |= PCI_BUS_FLAGS_NO_MSI; if (!parent) set_dev_node(bus->bridge, pcibus_to_node(bus)); |