Message ID | cover.1568239378.git.amit.kucheria@linaro.org |
---|---|
Headers | show |
Series | Cleanup arm64 driver dependencies | expand |
Hi Arnd, On Thu, Sep 12, 2019 at 2:59 PM Arnd Bergmann <arnd@arndb.de> wrote: > > On Thu, Sep 12, 2019 at 12:18 AM Amit Kucheria <amit.kucheria@linaro.org> wrote: > > > > I was using initcall_debugging on a QCOM platform and ran across a bunch of > > driver initcalls that are enabled even if their SoC support is disabled. > > > > Here are some fixups for a subset of them. > > The idea seems reasonable, disabling a platform may just turn off > all the drivers that are not useful elsewhere, but there are mistakes > in a lot of your changes, so I'm certainly not applying these for 5.4. OK, thanks for confirming that you have no objections to such changes, per-se. I'll spend some more time ensuring COMPILE_TEST coverage for these cleanups. I only focused on quickly cleaning up my initcall_debug output for now. > Generally speaking, the way that works best is > > config SUBSYS_DRIVER_FOO > tristate "SUBSYS support for FOO platform" > depends on ARCH_FOO || COMPILE_TEST > depends on SUBSYS > default "m" if ARCH_FOO > > This means it's enabled as a loadable module by default (use > default "y" instead where necessary) as long as the platform > is enabled, but an x86 allmodconfig build also includes it > because of COMPILE_TEST, while any configuration without > ARCH_FOO that is not compile-testing cannot enable it. How would you like to handle defconfigs which list a driver explicitly? Should we add ARCH_FOO to those defconfigs or remove DRIVER_FOO from them? Regards, Amit
On Thu, Sep 12, 2019 at 3:17 PM Mark Brown <broonie@kernel.org> wrote: > > On Thu, Sep 12, 2019 at 03:48:44AM +0530, Amit Kucheria wrote: > > > I was using initcall_debugging on a QCOM platform and ran across a bunch of > > driver initcalls that are enabled even if their SoC support is disabled. > > What exactly is the problem you're trying to fix here? For the > drivers I looked at these were bog standard register the driver > with the subsystem type initcalls on optional drivers so not > doing anything particularly disruptive or anything like that. I was trying to prune the defconfig only to drivers that make sense on the SoC. e.g. Why should I see a brcmstb_soc_device_early_init() call on a QCOM system when I've disabled ARCH_BRCMSTB? I came across this while trying to figure out how to make thermal and cpufreq frameworks initialise as early as possible. > For any given system that's going to be an issue for the > overwhelming majority of drivers on the tree, including those > that aren't associated with any particular architecture. Indeed. From a quick check, MFD and GPIO has a bunch of 'generic' drivers that aren't SoC-specific. I'm sure there are several such drivers in regulator framework too. They don't need to be 'fixed'. I was just trying to ring-fence obvious SoC-specific drivers behind a ARCH_FOO dependency since they seemed like low-hanging fruit. Let me know if it isn't a good use of everyone's time. Regards, Amit