PCI: dwc: Fix inner MSI IRQ domain registration
authorMarc Zyngier <maz@kernel.org>
Fri, 1 May 2020 11:39:21 +0000 (12:39 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jun 2020 13:32:58 +0000 (15:32 +0200)
[ Upstream commit 0414b93e78d87ecc24ae1a7e61fe97deb29fa2f4 ]

On a system that uses the internal DWC MSI widget, I get this
warning from debugfs when CONFIG_GENERIC_IRQ_DEBUGFS is selected:

  debugfs: File ':soc:pcie@fc000000' in directory 'domains' already present!

This is due to the fact that the DWC MSI code tries to register two
IRQ domains for the same firmware node, without telling the low
level code how to distinguish them (by setting a bus token). This
further confuses debugfs which tries to create corresponding
files for each domain.

Fix it by tagging the inner domain as DOMAIN_BUS_NEXUS, which is
the closest thing we have as to "generic MSI".

Link: https://lore.kernel.org/r/20200501113921.366597-1-maz@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Jingoo Han <jingoohan1@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/pci/controller/dwc/pcie-designware-host.c

index 6d4ef0101ef68274c963b26580493751952b7e8b..be62f654c8eb7bfd2d00de952ab91154b52f9dad 100644 (file)
@@ -285,6 +285,8 @@ int dw_pcie_allocate_domains(struct pcie_port *pp)
                return -ENOMEM;
        }
 
+       irq_domain_update_bus_token(pp->irq_domain, DOMAIN_BUS_NEXUS);
+
        pp->msi_domain = pci_msi_create_irq_domain(fwnode,
                                                   &dw_pcie_msi_domain_info,
                                                   pp->irq_domain);