[linux-sunxi] Re: [PATCH v3] dt-bindings: Add a clocks property to the simple-framebuffer binding

jonsmirl at gmail.com jonsmirl at gmail.com
Fri Oct 3 14:50:24 PDT 2014


On Fri, Oct 3, 2014 at 5:26 PM, Geert Uytterhoeven <geert at linux-m68k.org> wrote:
> On Fri, Oct 3, 2014 at 10:55 PM, jonsmirl at gmail.com <jonsmirl at gmail.com> wrote:
>> On Thu, Oct 2, 2014 at 9:46 AM, Geert Uytterhoeven <geert at linux-m68k.org> wrote:
>>> On Thu, Oct 2, 2014 at 3:34 PM, jonsmirl at gmail.com <jonsmirl at gmail.com> 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.

Could we start all of the regulators and clocks off with a reference
count of one, but not do anything to change their state? Then this
ioctl() would decrement that extra reference. Removing the extra
reference would then disable everything that isn't claimed.


>
> Gr{oetje,eeting}s,
>
>                         Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
>
> 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



-- 
Jon Smirl
jonsmirl at gmail.com



More information about the linux-arm-kernel mailing list