Re: [PATCH v6 22/22] of/platform: Defer probes of registered devices
From: Tomeu Vizoso <hidden>
Date: 2015-10-22 13:05:23
Also in:
linux-acpi, linux-arm-kernel, linuxppc-dev, lkml
On 22 October 2015 at 00:51, Scott Wood [off-list ref] wrote:
On Wed, 2015-10-21 at 08:44 -0500, Rob Herring wrote:quoted
On Wed, Oct 21, 2015 at 12:54 AM, Scott Wood [off-list ref] wrote:quoted
On Mon, 2015-09-21 at 16:03 +0200, Tomeu Vizoso wrote:quoted
Instead of trying to match and probe platform and AMBA devices right after each is registered, delay their probes until device_initcall_sync. This means that devices will start probing once all built-in drivers have registered, and after all platform and AMBA devices from the DT have been registered already. This allows us to prevent deferred probes by probing dependencies on demand. Signed-off-by: Tomeu Vizoso <tomeu.vizoso-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org> --- Changes in v4: - Also defer probes of AMBA devices registered from the DT as they can also request resources. drivers/of/platform.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)This breaks arch/powerpc/sysdev/fsl_pci.c. The PCI bus is an OF platform device, and it must be probed before pcibios_init() which is a subsys_initcall(), or else the PCI bus never gets scanned.Thanks for the report. This is probably getting dropped, but it could be disabled for PPC.I don't think that adding another arbitrary arch difference would be the right solution.
I think Rob meant temporarily disable it while things get fixed. At least, I don't see any reason why PPC wouldn't benefit from this series. Regards, Tomeu
quoted
Any plans to fix this and make PCI hosts hotplugable? For the scanning part, generally the host controller drivers are responsible for scanning their bus now.Scanning from the host controller driver seems like a reasonable goal, though it'd take a bit of digging to extract whatever other things fsl_pci may depend on from the common PPC PCI code, in particular the various things that pcibios_resource_survey() does after all PCI buses have been scanned. There's also check_swiotlb_enabled(), another subsys_initcall, which frees the swiotlb memory if ppc_swiotlb_enable hasn't been set. The PCI host controller probe sets ppc_swiotlb_enable if it wasn't able to create an inbound mapping for all RAM. Even if we were to change that to a later initcall, there's nothing later than late_initcall that we could use. -Scott -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
-- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html