All of lore.kernel.org
 help / color / mirror / Atom feed
From: sebastian.hesselbarth@gmail.com (Sebastian Hesselbarth)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/4] clk: mvebu: fix clk init order
Date: Mon, 27 Jan 2014 19:21:38 +0100	[thread overview]
Message-ID: <52E6A3B2.6060301@gmail.com> (raw)
In-Reply-To: <20140127153908.4f6f46c2@skate>

On 01/27/14 15:39, Thomas Petazzoni wrote:
> On Sat, 25 Jan 2014 19:19:06 +0100, Sebastian Hesselbarth wrote:
>> This patch set fixes clk init order that went upside-down with
>> v3.14. I haven't really investigated what caused this, but I assume
>> it is related with DT node reordering by addresses.
>>
>> Anyway, with v3.14 for MVEBU SoCs, the clock gating driver gets
>> registered before core clocks driver. Unfortunately, we cannot
>> return -EPROBE_DEFER in drivers initialized by clk_of_init. As the
>> init order for our drivers is always core clocks before clock gating,
>> we maintain init order ourselves by hooking CLK_OF_DECLARE to one
>> init function that will register core clocks before clock gating
>> driver.
>>
>> This patch is based on pre-v3.14-rc1 mainline and should go in as
>> fixes for it. As we now send MVEBU clk pull-requests to Mike directly,
>> I suggest Jason picks it up as a topic branch.
>
> I'm not sure I really like the solution you're proposing here. I'd very
> much prefer to keep one CLK_OF_DECLARE() per clock type, associated to
> one function registering only this clock type.

Have you ever had a look at e.g. clk-imx28.c? Not that I really like
the approach, but it is common practice to do so.

> Instead, shouldn't the clock framework be improved to *not* register a
> clock until its parent have been registered? If the DT you have the
> gatable clocks that depend on the core clocks, then the gatable clocks
> should not be registered if the core clocks have not yet been
> registered.
>
> Do you think this is possible? Am I missing something here?

As I said, clk_of_init does not care about return values from the
clock init functions. Without it, it cannot decide if a clock
driver failed horribly, failed because of missing dependencies, or
successfully installed all clocks. Also, it is early stuff and I guess
clk_of_init will have to build its own "defered_list" and loop over
until done.

BTW, this is a fix not an improvement. We should find an acceptable
solution soon. But I am still open for suggestions, too.

Sebastian

WARNING: multiple messages have this Message-ID (diff)
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
To: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
	Mike Turquette <mturquette@linaro.org>,
	Jason Cooper <jason@lakedaemon.net>,
	linux-kernel@vger.kernel.org,
	Ezequiel Garcia <ezequiel.garcia@free-electrons.com>,
	Gregory Clement <gregory.clement@free-electrons.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 0/4] clk: mvebu: fix clk init order
Date: Mon, 27 Jan 2014 19:21:38 +0100	[thread overview]
Message-ID: <52E6A3B2.6060301@gmail.com> (raw)
In-Reply-To: <20140127153908.4f6f46c2@skate>

On 01/27/14 15:39, Thomas Petazzoni wrote:
> On Sat, 25 Jan 2014 19:19:06 +0100, Sebastian Hesselbarth wrote:
>> This patch set fixes clk init order that went upside-down with
>> v3.14. I haven't really investigated what caused this, but I assume
>> it is related with DT node reordering by addresses.
>>
>> Anyway, with v3.14 for MVEBU SoCs, the clock gating driver gets
>> registered before core clocks driver. Unfortunately, we cannot
>> return -EPROBE_DEFER in drivers initialized by clk_of_init. As the
>> init order for our drivers is always core clocks before clock gating,
>> we maintain init order ourselves by hooking CLK_OF_DECLARE to one
>> init function that will register core clocks before clock gating
>> driver.
>>
>> This patch is based on pre-v3.14-rc1 mainline and should go in as
>> fixes for it. As we now send MVEBU clk pull-requests to Mike directly,
>> I suggest Jason picks it up as a topic branch.
>
> I'm not sure I really like the solution you're proposing here. I'd very
> much prefer to keep one CLK_OF_DECLARE() per clock type, associated to
> one function registering only this clock type.

Have you ever had a look at e.g. clk-imx28.c? Not that I really like
the approach, but it is common practice to do so.

> Instead, shouldn't the clock framework be improved to *not* register a
> clock until its parent have been registered? If the DT you have the
> gatable clocks that depend on the core clocks, then the gatable clocks
> should not be registered if the core clocks have not yet been
> registered.
>
> Do you think this is possible? Am I missing something here?

As I said, clk_of_init does not care about return values from the
clock init functions. Without it, it cannot decide if a clock
driver failed horribly, failed because of missing dependencies, or
successfully installed all clocks. Also, it is early stuff and I guess
clk_of_init will have to build its own "defered_list" and loop over
until done.

BTW, this is a fix not an improvement. We should find an acceptable
solution soon. But I am still open for suggestions, too.

Sebastian


  reply	other threads:[~2014-01-27 18:21 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-25 18:19 [PATCH 0/4] clk: mvebu: fix clk init order Sebastian Hesselbarth
2014-01-25 18:19 ` Sebastian Hesselbarth
2014-01-25 18:19 ` [PATCH 1/4] clk: mvebu: armada-370: maintain clock " Sebastian Hesselbarth
2014-01-25 18:19   ` Sebastian Hesselbarth
2014-01-25 18:19 ` [PATCH 2/4] clk: mvebu: armada-xp: " Sebastian Hesselbarth
2014-01-25 18:19   ` Sebastian Hesselbarth
2014-01-25 18:19 ` [PATCH 3/4] clk: mvebu: dove: " Sebastian Hesselbarth
2014-01-25 18:19   ` Sebastian Hesselbarth
2014-01-25 18:19 ` [PATCH 4/4] clk: mvebu: kirkwood: " Sebastian Hesselbarth
2014-01-25 18:19   ` Sebastian Hesselbarth
2014-01-25 21:32 ` [PATCH 0/4] clk: mvebu: fix clk " Emilio López
2014-01-25 21:32   ` Emilio López
2014-01-25 21:44   ` Sebastian Hesselbarth
2014-01-25 21:44     ` Sebastian Hesselbarth
2014-01-25 22:11     ` Emilio López
2014-01-25 22:11       ` Emilio López
2014-01-26  0:25       ` Ezequiel Garcia
2014-01-26  0:25         ` Ezequiel Garcia
2014-01-27 14:39 ` Thomas Petazzoni
2014-01-27 14:39   ` Thomas Petazzoni
2014-01-27 18:21   ` Sebastian Hesselbarth [this message]
2014-01-27 18:21     ` Sebastian Hesselbarth
2014-01-27 18:28     ` Jason Cooper
2014-01-27 18:28       ` Jason Cooper
2014-01-30 10:24 ` Gregory CLEMENT
2014-01-30 10:24   ` Gregory CLEMENT
2014-01-30 10:31   ` Sebastian Hesselbarth
2014-01-30 10:31     ` Sebastian Hesselbarth
2014-02-03 23:16     ` Willy Tarreau
2014-02-03 23:16       ` Willy Tarreau
2014-02-03 23:36       ` Sebastian Hesselbarth
2014-02-03 23:36         ` Sebastian Hesselbarth
2014-02-04 14:58         ` Gregory CLEMENT
2014-02-04 14:58           ` Gregory CLEMENT
2014-02-04 20:07           ` Thomas Petazzoni
2014-02-04 20:07             ` Thomas Petazzoni
2014-02-05 14:08 ` Mike Turquette
2014-02-05 14:08   ` Mike Turquette
2014-02-05 17:43   ` Jason Cooper
2014-02-05 17:43     ` Jason Cooper
2014-02-05 18:34 ` Jason Cooper
2014-02-05 18:34   ` Jason Cooper
2014-02-06 17:08   ` Ezequiel Garcia
2014-02-06 17:08     ` Ezequiel Garcia
2014-02-06 18:08     ` Jason Cooper
2014-02-06 18:08       ` Jason Cooper
2014-02-17 14:13   ` Ezequiel Garcia
2014-02-17 14:13     ` Ezequiel Garcia
2014-02-17 14:25     ` Gregory CLEMENT
2014-02-17 14:25       ` Gregory CLEMENT
2014-02-17 14:42       ` Emilio López
2014-02-17 14:42         ` Emilio López
2014-02-17 15:04         ` Gregory CLEMENT
2014-02-17 15:04           ` Gregory CLEMENT
2014-02-17 15:31           ` Emilio López
2014-02-17 15:31             ` Emilio López
2014-02-17 15:21       ` Ezequiel Garcia
2014-02-17 15:21         ` Ezequiel Garcia
2014-02-17 15:28         ` Gregory CLEMENT
2014-02-17 15:28           ` Gregory CLEMENT
2014-02-17 15:44           ` Ezequiel Garcia
2014-02-17 15:44             ` Ezequiel Garcia
2014-02-17 15:59             ` Gregory CLEMENT
2014-02-17 15:59               ` Gregory CLEMENT
2014-02-17 18:19               ` Ezequiel Garcia
2014-02-17 18:19                 ` Ezequiel Garcia
2014-02-18  9:47                 ` Gregory CLEMENT
2014-02-18  9:47                   ` Gregory CLEMENT
2014-02-19 16:28                   ` Ezequiel Garcia
2014-02-19 16:28                     ` Ezequiel Garcia
2014-02-19 20:24                   ` Emilio López
2014-02-19 20:24                     ` Emilio López

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52E6A3B2.6060301@gmail.com \
    --to=sebastian.hesselbarth@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.