On Fri, Aug 30, 2024 at 11:49:39AM -0400, Frank Li wrote: > On Thu, Aug 29, 2024 at 05:00:05PM -0500, Bjorn Helgaas wrote: > > On Thu, Aug 29, 2024 at 05:43:42PM -0400, Frank Li wrote: > > > On Thu, Aug 29, 2024 at 04:22:35PM -0500, Bjorn Helgaas wrote: > > > > On Wed, Aug 28, 2024 at 02:40:33PM -0700, Tim Harvey wrote: > > > > > Greetings, > > > > > > > > > > I have a user that is using an IMX8MM SoC (dwc controller) with a > > > > > miniPCIe card that has a PEX8112 PCI-to-PCIe bridge to a legacy PCI > > > > > device and the device is not getting a valid interrupt. > > > > > > > > Does pci-imx6.c support INTx at all? > > > > > > Yes, dwc controller map INTx message to 4 irq lines, which connect to GIC. > > > we tested it by add nomsi in kernel command line. > > > > Thanks, Frank. Can you point me to the dwc code where this happens? > > Maybe I can remember this for next time or add a comment to help > > people find it. > > I think it needn't special code to handle this. in dts > > interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>, > <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>, > <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, > <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; > > It map INT(A,B,C,D) to 4 GIC irq. OK, thanks! I guess this happens in the of_irq_parse_pci() path, e.g.: imx6_pcie_probe dw_pcie_host_init devm_pci_alloc_host_bridge devm_of_pci_bridge_init bridge->map_irq = of_irq_parse_and_map_pci pci_device_probe # pci_bus_type.probe pci_assign_irq bridge->map_irq() of_irq_parse_and_map_pci of_irq_parse_pci of_irq_parse_one of_irq_parse_raw of_get_property(ipar, "interrupt-map", &imaplen) So there really isn't any mention of INTx directly in imx6 or the dwc core. I suppose something like: - Set CONFIG_DYNAMIC_DEBUG=y - Boot with kernel parameters: ignore_loglevel dyndbg="file drivers/pci/* +p; file drivers/of/* +p" should enable some debug output related to this. Bjorn