linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V3 4/5] clk: core: add CLK_OPS_PARENT_ON flags to support clocks require parent on
Date: Thu, 13 Aug 2015 18:01:09 -0700	[thread overview]
Message-ID: <20150814010109.GW26614@codeaurora.org> (raw)
In-Reply-To: <1438089585-30103-5-git-send-email-aisheng.dong@freescale.com>

On 07/28, Dong Aisheng wrote:
> On Freescale i.MX7D platform, all clocks operations, including
> enable/disable, rate change and re-parent, requires its parent
> clock on. Current clock core can not support it well.
> This patch introduce a new flag CLK_OPS_PARENT_ON to handle this
> special case in clock core that enable its parent clock firstly for
> each operation and disable it later after operation complete.
> 
> This patch fixes disaling clocks while its parent is off.
> This is a special case that is caused by a state mis-align between
> HW and SW in clock tree during booting.
> Usually in uboot, we may enable all clocks in HW by default.
> And during kernel booting time, the parent clock could be disabled in its
> driver probe due to calling clk_prepare_enable and clk_disable_unprepare.
> Because it's child clock is only enabled in HW while its SW usecount
> in clock tree is still 0, so clk_disable of parent clock will gate
> the parent clock in both HW and SW usecount ultimately.
> Then there will be a clock is on in HW while its parent is disabled.
> 
> Later when clock core does clk_disable_unused, this clock disable
> will cause system hang due to the limitation of operation requiring
> its parent clock on.
> 
> Cc: Mike Turquette <mturquette@linaro.org>
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> Signed-off-by: Dong Aisheng <aisheng.dong@freescale.com>
> ---

Sorry, I still don't agree with this patch. There's no reason we
should be turning on clocks during late init so that we can turn
off clocks. If there's some sort of problem in doing that we
should figure it out and make it so that during late init we turn
off clocks from the leaves of the tree to the root.

I agree that there's a problem here where we don't properly
handle keeping children clocks on if a driver comes in and turns
off a clock in the middle of the tree before late init. That's a
real bug, and we should fix it. Mike Turquette has been doing
some work to have a way to indicate that certain clocks should be
kept on until client drivers grab them. I think it will also make
sure to up refcounts on parent clocks in the middle of the tree
when it figures out that a child clock is enabled. Would that be
all that we need to do to fix this problem?

Also, the subject of this patch and patch 5 are the same. Why?

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

  reply	other threads:[~2015-08-14  1:01 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-28 13:19 [PATCH V3 0/5] clk: support clocks which requires parent clock on during operation Dong Aisheng
2015-07-28 13:19 ` [PATCH V3 1/5] clk: remove duplicated code with __clk_set_parent_after Dong Aisheng
2015-08-13 18:25   ` Stephen Boyd
2015-07-28 13:19 ` [PATCH V3 2/5] clk: introduce clk_core_enable_lock and clk_core_disable_lock functions Dong Aisheng
2015-07-28 13:19 ` [PATCH V3 3/5] clk: move clk_disable_unused after clk_core_disable_unprepare function Dong Aisheng
2015-07-28 13:19 ` [PATCH V3 4/5] clk: core: add CLK_OPS_PARENT_ON flags to support clocks require parent on Dong Aisheng
2015-08-14  1:01   ` Stephen Boyd [this message]
2015-08-17 12:45     ` Dong Aisheng
2015-08-19 11:07       ` Dong Aisheng
2015-09-09  9:20         ` Dong Aisheng
2015-07-28 13:19 ` [PATCH V3 5/5] " Dong Aisheng
2015-07-28 14:38 ` [PATCH V3 0/5] clk: support clocks which requires parent clock on during operation Dong Aisheng
2015-08-04  9:45   ` Dong Aisheng
2015-08-13 10:17     ` Dong Aisheng
2016-02-22 14:55       ` Fabio Estevam
2016-02-23  3:45         ` Dong Aisheng
2015-08-13 20:55 ` Joachim Eastwood
2016-03-30 16:00 ` Fabio Estevam
2016-03-31 13:51   ` Dong Aisheng

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=20150814010109.GW26614@codeaurora.org \
    --to=sboyd@codeaurora.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).