Message ID | 20170426161335.GA12240@red-moon (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> > Note that IRQ 12 has disappeared from Flags: on 0000:00:00.0. > > Thank you for testing it, that's exactly what we need. > > To check if the plumbing is working (ie to check I have not messed > up the bus scan API rework), mind testing the patch below please > and report back (it applies on top of this series) ? 0000:00:00.0 Memory controller: Marvell Technology Group Ltd. 88f5182 [Orion-NAS] ARM SoC (rev 02) Subsystem: Marvell Technology Group Ltd. Device 11ab Flags: bus master, fast devsel, latency 0, IRQ 12 The interrupt is back with this patch. Andrew
On Wed, Apr 26, 2017 at 08:53:48PM +0200, Andrew Lunn wrote: > > > Note that IRQ 12 has disappeared from Flags: on 0000:00:00.0. > > > > Thank you for testing it, that's exactly what we need. > > > > To check if the plumbing is working (ie to check I have not messed > > up the bus scan API rework), mind testing the patch below please > > and report back (it applies on top of this series) ? > > 0000:00:00.0 Memory controller: Marvell Technology Group Ltd. 88f5182 [Orion-NAS] ARM SoC (rev 02) > Subsystem: Marvell Technology Group Ltd. Device 11ab > Flags: bus master, fast devsel, latency 0, IRQ 12 > > The interrupt is back with this patch. Ok the IRQ allocation works then, the difference is when the mapping is called, original patch series moves the IRQ allocation to device probe time (that's why IRQ does not show up, there is no matching driver in the kernel for the PCI device above), with the additional patch the IRQ allocation is done when the PCI device is added. It is a user visible change, not sure though if that's a real issue, that's exactly the reason why I posted this series, to find out and converge. Thanks ! Lorenzo
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index 4632fa4..afa7271 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -400,8 +400,6 @@ static int pci_device_probe(struct device *dev) struct pci_dev *pci_dev = to_pci_dev(dev); struct pci_driver *drv = to_pci_driver(dev->driver); - pci_assign_irq(pci_dev); - error = pcibios_alloc_irq(pci_dev); if (error < 0) return error; diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index de259f3..dc9a1b6 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -1967,6 +1967,8 @@ void pci_device_add(struct pci_dev *dev, struct pci_bus *bus) ret = pcibios_add_device(dev); WARN_ON(ret < 0); + pci_assign_irq(dev); + /* Setup MSI irq domain */ pci_set_msi_domain(dev);