Thread (21 messages) 21 messages, 3 authors, 2018-12-20

Re: [PATCH 1/6] clk: Remove recursion in clk_core_{prepare,enable}()

From: Stephen Boyd <sboyd@kernel.org>
Date: 2018-10-24 13:07:56
Also in: linux-arm-kernel, linux-clk, linux-rockchip, lkml

Quoting Derek Basehore (2018-10-23 18:31:27)
From: Stephen Boyd <redacted>

Enabling and preparing clocks can be written quite naturally with
recursion. We start at some point in the tree and recurse up the
tree to find the oldest parent clk that needs to be enabled or
prepared. Then we enable/prepare and return to the caller, going
back to the clk we started at and enabling/preparing along the
way.

The problem is recursion isn't great for kernel code where we
have a limited stack size. Furthermore, we may be calling this
code inside clk_set_rate() which also has recursion in it, so
we're really not looking good if we encounter a tall clk tree.

Let's create a stack instead by looping over the parent chain and
collecting clks of interest. Then the enable/prepare becomes as
simple as iterating over that list and calling enable.

Cc: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Stephen Boyd <redacted>
Signed-off-by: Derek Basehore <redacted>
Did you change anything substantially? Or is it just a resend of my
patch from a while ago? If you can add a link to the original and also
describe what changed in a maintainer tag it would be much easier for me
to compare.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help