On Tue, 11 May 2021 15:12:08 +0100, Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx> wrote: > > Hi Marc, > > On Mon, May 10, 2021 at 07:23:14PM +0100, Marc Zyngier wrote: > > > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > > > index 3a62d09b8869..275204646c68 100644 > > > --- a/drivers/pci/probe.c > > > +++ b/drivers/pci/probe.c > > > @@ -925,7 +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)) > > > + if (bridge->msi_domain && !dev_get_msi_domain(&bus->dev) && > > > + !pci_host_of_has_msi_map(parent)) > > > bus->bus_flags |= PCI_BUS_FLAGS_NO_MSI; > > > > > > if (!parent) > > > > Do we need something similar for IORT, which implements a similar > > functionality to "msi-map"? My ACPI boxes seem to get their MSIs just > > fine though... > > I'm not seeing the issue either under ACPI on the fast model, because it > doesn't go through pci_host_common_probe(), and bridge->msi_domain is not > set: > > acpi_pci_root_add() > pci_acpi_scan_root() > acpi_pci_root_create() > pci_create_root_bus() > pci_register_host_bridge() > > It doesn't look like any ACPI platform can set bridge->msi_domain at the > moment. If they do flip the switch at some point, MSIs won't work and > we'll need something for IORT. But I'd leave it out for the moment. Fair enough, although there seem to be the opposite issue on some platforms that do not have any MSI to offer (see [1]). I guess we'll cross that bridge eventually. For this patch: Acked-by: Marc Zyngier <maz@xxxxxxxxxx> M. [1] https://lore.kernel.org/r/b5a5a6d8-6ffc-8c5c-c5b1-fb4f5616069f@xxxxxxx -- Without deviation from the norm, progress is not possible.