On Fri, Sep 06, 2024 at 12:37:42PM -0700, Tim Harvey wrote: > ... > I have the hardware in hand now as well as the out-of-tree driver > that's being used. I can say there is nothing wrong here with legacy > PCI interrupt mapping, if I write a skeleton driver that uses > pci_resister_driver(struct pci_driver) its probe is called with an > interrupt and request_irq on that interrupt succeeds just fine. > > The issue here is with the vendor's out-of-tree driver which instead > is using pci_get_device() to scan the bus which returns a struct > pci_dev * that doesn't have an irq assigned (like what is described > in > https://www.kernel.org/doc/html/v5.5/PCI/pci.html#how-to-find-pci-devices-manually). > When using pci_get_device() when/how does pci_assign_irq() get > called to assign the irq to the device? Hmmm. pci_get_device() is strongly discouraged because it subverts the driver model (it skips the usual driver probe/claim model so it allows multiple drivers to operate the device simultaneously which can obviously cause conflicts), and it doesn't play well with hotplug (hotplug events automatically cause driver .probe() methods to be called, but users of pci_get_device() have to roll their own way of doing this). So I'm not aware of a documented/supported way to set up the INTx interrupts in the pci_get_device() case. Bjorn