On Tue, May 2, 2017 at 7:15 PM, Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx> wrote: > On Fri, Apr 28, 2017 at 02:28:38PM +0200, Arnd Bergmann wrote: >> On Wed, Apr 26, 2017 at 1:17 PM, Lorenzo Pieralisi >> <lorenzo.pieralisi@xxxxxxx> wrote: >> >> Good idea, yes. To avoid growing the number of interfaces too >> much, should we change the existing users of pci_register_host_bridge >> in host drivers over to this entry point, and make the other one >> local to probe.c then? > > Yes, the problem is that there are drivers (ie pcie-iproc.c) that > require the struct pci_bus (created by pci_register_host_bridge()) > to fiddle with it to check link status and THEN scan the bus (so > the pci_register_host_bridge() call can't be embedded in the scan > interface - the driver requires struct pci_bus for pci_ops to work > before scanning the bus itself). > > I will see how I can accommodate this change because you definitely > have a point. The obvious answer for that particular problem would be a link_check() callback in the bridge operations. I think that would also fit in well with the dw_pcie driver that has some private infrastructure for it. I don't know if that callback is sufficient to solve all related problems though. Arnd