On Fri, Oct 3, 2014 at 10:55 PM, jonsmirl@xxxxxxxxx <jonsmirl@xxxxxxxxx> wrote: > On Thu, Oct 2, 2014 at 9:46 AM, Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: >> On Thu, Oct 2, 2014 at 3:34 PM, jonsmirl@xxxxxxxxx <jonsmirl@xxxxxxxxx> wrote: >>> Does the clock and regulator cleanup happen before drivers can load >>> off from initrd? I didn't think it did but I might be wrong. >> >> Yes >> >> drivers/base/power/domain.c:late_initcall(genpd_poweroff_unused); >> drivers/clk/clk.c:late_initcall_sync(clk_disable_unused); >> drivers/regulator/core.c:late_initcall_sync(regulator_init_complete); > > What do you think about putting these calls onto an ioctl somewhere > and then eliminating the late_initcall(..)? A tiny user space app > could then hit that ioctl after all of the loadable device drivers are > loaded. Add the command to make this ioctl call to busybox or udev. > After all, it is not fatal if these calls aren't made, all they do is > save power. Add a link in rc.d or somewhere similar to run this app at > the appropriate time. > > Switching these over to an ioctl allows a window to be opened for > device specific driver loading before the clock/regulator clean up > happens. > > Now all of this mess of protecting clocks and regulator disappears. > Instead get the device specific drivers written and loaded, then run > the cleanup app which hits the ioctl(). All of the correct > clock/regulators will be claimed and then this clean code will do the > right thing. > > From my perspective it appears that this cleanup is being done too > early which then triggers a need to protect things from cleanup. Not doing the cleanup doesn't help. If someone else calls clk_disable() on a clock which shares a parent with the clock you're silently using, that clock will still be disabled. This can happen at any time. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html