On Fri, Aug 17, 2012 at 3:32 PM, Thierry Reding <thierry.reding@xxxxxxxxxxxxxxxxx> wrote: > On Fri, Aug 17, 2012 at 03:25:22PM -0600, Bjorn Helgaas wrote: >> On Fri, Aug 17, 2012 at 3:07 PM, Thierry Reding >> <thierry.reding@xxxxxxxxxxxxxxxxx> wrote: >> > On Fri, Aug 17, 2012 at 10:48:39PM +0200, Thierry Reding wrote: >> >> On Fri, Aug 17, 2012 at 02:39:34PM -0600, Bjorn Helgaas wrote: >> > [...] >> >> > Well, maybe you just need to turn on CONFIG_HOTPLUG. How would that >> >> > affect you? I think we would still have to change some __inits to >> >> > __devinit, including pcibios_update_irq(), but it might be more >> >> > manageable. >> >> >> >> You said that depending on HOTPLUG wouldn't be enough because it would >> >> exclude reenumeration at runtime if HOTPLUG wasn't defined. Also it is >> >> theoretically possible to build a kernel without HOTPLUG but have the >> >> enumeration start after init because of deferred probing. Those cases >> >> won't work if we keep __init or __devinit respectively, right? >> > >> > Another possibility would be to make PCI select HOTPLUG or depend on it. >> > That way it would be made sure that __devinit wouldn't cause all the >> > functions to be discarded after init. >> >> There's been some discussion recently about whether CONFIG_HOTPLUG is >> worth keeping any more, but nothing's been resolved yet. If we did >> decide to remove CONFIG_HOTPLUG, or require it for PCI, I would rather >> just remove all the __devinit annotations because they'd be >> superfluous. > > I've missed that discussion. Can you point me to it? Sure: http://lists.linux-foundation.org/pipermail/ksummit-2012-discuss/2012-June/000051.html >From previous email: >> This is the situation (deferred probing with CONFIG_HOTPLUG=n) that >> I'm suggesting might not need to work. After all, hotplug essentially >> means "adding devices after init." > Yes, I guess that would be appropriate. However I don't see how this > could be expressed in Kconfig unless the deferred probing itself is > conditionalized on HOTPLUG. Even in that case it would still be possible > to build a PCIe controller driver as a module and load it at runtime > after init. That's exactly it -- the deferred probing and any loadable PCI host bridge drivers would have to depend on HOTPLUG. That seems like the most straightforward, least-surprises, approach for now. Bjorn