All of lore.kernel.org
 help / color / mirror / Atom feed
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/4] clk: Provide always-on clock support
Date: Thu, 2 Apr 2015 08:10:27 +0100	[thread overview]
Message-ID: <20150402071027.GW9447@x1> (raw)
In-Reply-To: <CABb+yY2SMq3=wKEdTO_XgK3BOMSWy7=EWufqS9QYhGzLM1HQkw@mail.gmail.com>

On Thu, 02 Apr 2015, Jassi Brar wrote:

> On Wed, Apr 1, 2015 at 7:12 AM, Michael Turquette <mturquette@linaro.org> wrote:
> > Quoting Jassi Brar (2015-03-02 02:28:44)
> >> On 2 March 2015 at 15:48, Lee Jones <lee.jones@linaro.org> wrote:
> >> > On Mon, 02 Mar 2015, Jassi Brar wrote:
> >> >
> >> >> On Mon, Mar 2, 2015 at 2:06 PM, Lee Jones <lee.jones@linaro.org> wrote:
> >> >> > On Sat, 28 Feb 2015, Jassi Brar wrote:
> >> >> >
> >> >> >> On 28 February 2015 at 02:44, Lee Jones <lee.jones@linaro.org> wrote:
> >> >> >> > Lots of platforms contain clocks which if turned off would prove fatal.
> >> >> >> > The only way to recover from these catastrophic failures is to restart
> >> >> >> > the board(s).  Now, when a clock is registered with the framework it is
> >> >> >> > compared against a list of provided always-on clock names which must be
> >> >> >> > kept ungated.  If it matches, we enable the existing CLK_IGNORE_UNUSED
> >> >> >> > flag, which will prevent the common clk framework from attempting to
> >> >> >> > gate it during the clk_disable_unused() procedure.
> >> >> >> >
> >> >> >> If a clock is critical on a certain board, it could be got+enabled
> >> >> >> during early boot so there is always a user.
> >> >> >
> >> >> > I tried this.  There was push-back from the DT maintainers.
> >> >> >
> >> >> >   http://lists.infradead.org/pipermail/linux-arm-kernel/2015-February/324417.html
> >> >> >
> >> >> Thanks, I wasn't aware of the history.
> >> >>
> >> >> >> To be able to do that from DT, maybe add a new, say, CLK_ALWAYS_ON
> >> >> >> flag could be made to initialize the clock with one phantom user
> >> >> >> already. Or just reuse the CLK_IGNORE_UNUSED?
> >> >> >
> >> >> > How is that different to what this set is doing?
> >> >> >
> >> >> The phantom user - that's there but none can see it.
> >> >>
> >> >> How about?
> >> >>
> >> >> +       of_property_for_each_string(np, "clock-always-on", prop, clkname) {
> >> >> +               clk = __clk_lookup(clkname);
> >> >> +               if (!clk)
> >> >> +                       continue;
> >> >> +
> >> >> +               clk->core->enable_count = 1;
> >> >> +               clk->core->prepare_count = 1;
> >> >> +       }
> >> >
> >> > This is only fractionally different from the current implementation.
> >> >
> >> > I believe the current way it slightly nicer, as we don't have to fake
> >> > the user count.
> >> >
> >> Well... the user is indeed there, isn't it? It's just not known to
> >> Linux. So 'fake' isn't most applicable here.
> >> Otherwise you might have to stub out some existing and future
> >> functions for CLK_IGNORE_UNUSED. And how do we explain to userspace
> >> which would see power drawn but no user of the clock?
> >
> > Jassi,
> >
> > This is broken. What if the parent of this clock has
> > {enable,prepare}_count of zero? The way we propagate these refcounts up
> > the tree would fall over.
> >
> Yeah it needs to be done at higher level,
> - clk->core->enable_count = 1;
> - clk->core->prepare_count = 1;
> + clk_prepare_enable(clk);

FYI: https://lkml.org/lkml/2015/4/1/267

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

WARNING: multiple messages have this Message-ID (diff)
From: Lee Jones <lee.jones@linaro.org>
To: Jassi Brar <jassisinghbrar@gmail.com>
Cc: Michael Turquette <mturquette@linaro.org>,
	Jassi Brar <jaswinder.singh@linaro.org>,
	Devicetree List <devicetree@vger.kernel.org>,
	kernel@stlinux.com, Stephen Boyd <sboyd@codeaurora.org>,
	lkml <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 3/4] clk: Provide always-on clock support
Date: Thu, 2 Apr 2015 08:10:27 +0100	[thread overview]
Message-ID: <20150402071027.GW9447@x1> (raw)
In-Reply-To: <CABb+yY2SMq3=wKEdTO_XgK3BOMSWy7=EWufqS9QYhGzLM1HQkw@mail.gmail.com>

On Thu, 02 Apr 2015, Jassi Brar wrote:

> On Wed, Apr 1, 2015 at 7:12 AM, Michael Turquette <mturquette@linaro.org> wrote:
> > Quoting Jassi Brar (2015-03-02 02:28:44)
> >> On 2 March 2015 at 15:48, Lee Jones <lee.jones@linaro.org> wrote:
> >> > On Mon, 02 Mar 2015, Jassi Brar wrote:
> >> >
> >> >> On Mon, Mar 2, 2015 at 2:06 PM, Lee Jones <lee.jones@linaro.org> wrote:
> >> >> > On Sat, 28 Feb 2015, Jassi Brar wrote:
> >> >> >
> >> >> >> On 28 February 2015 at 02:44, Lee Jones <lee.jones@linaro.org> wrote:
> >> >> >> > Lots of platforms contain clocks which if turned off would prove fatal.
> >> >> >> > The only way to recover from these catastrophic failures is to restart
> >> >> >> > the board(s).  Now, when a clock is registered with the framework it is
> >> >> >> > compared against a list of provided always-on clock names which must be
> >> >> >> > kept ungated.  If it matches, we enable the existing CLK_IGNORE_UNUSED
> >> >> >> > flag, which will prevent the common clk framework from attempting to
> >> >> >> > gate it during the clk_disable_unused() procedure.
> >> >> >> >
> >> >> >> If a clock is critical on a certain board, it could be got+enabled
> >> >> >> during early boot so there is always a user.
> >> >> >
> >> >> > I tried this.  There was push-back from the DT maintainers.
> >> >> >
> >> >> >   http://lists.infradead.org/pipermail/linux-arm-kernel/2015-February/324417.html
> >> >> >
> >> >> Thanks, I wasn't aware of the history.
> >> >>
> >> >> >> To be able to do that from DT, maybe add a new, say, CLK_ALWAYS_ON
> >> >> >> flag could be made to initialize the clock with one phantom user
> >> >> >> already. Or just reuse the CLK_IGNORE_UNUSED?
> >> >> >
> >> >> > How is that different to what this set is doing?
> >> >> >
> >> >> The phantom user - that's there but none can see it.
> >> >>
> >> >> How about?
> >> >>
> >> >> +       of_property_for_each_string(np, "clock-always-on", prop, clkname) {
> >> >> +               clk = __clk_lookup(clkname);
> >> >> +               if (!clk)
> >> >> +                       continue;
> >> >> +
> >> >> +               clk->core->enable_count = 1;
> >> >> +               clk->core->prepare_count = 1;
> >> >> +       }
> >> >
> >> > This is only fractionally different from the current implementation.
> >> >
> >> > I believe the current way it slightly nicer, as we don't have to fake
> >> > the user count.
> >> >
> >> Well... the user is indeed there, isn't it? It's just not known to
> >> Linux. So 'fake' isn't most applicable here.
> >> Otherwise you might have to stub out some existing and future
> >> functions for CLK_IGNORE_UNUSED. And how do we explain to userspace
> >> which would see power drawn but no user of the clock?
> >
> > Jassi,
> >
> > This is broken. What if the parent of this clock has
> > {enable,prepare}_count of zero? The way we propagate these refcounts up
> > the tree would fall over.
> >
> Yeah it needs to be done at higher level,
> - clk->core->enable_count = 1;
> - clk->core->prepare_count = 1;
> + clk_prepare_enable(clk);

FYI: https://lkml.org/lkml/2015/4/1/267

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2015-04-02  7:10 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-27 21:14 [PATCH 0/4] clk: Provide support for always-on clocks Lee Jones
2015-02-27 21:14 ` Lee Jones
2015-02-27 21:14 ` Lee Jones
2015-02-27 21:14 ` [PATCH 1/4] ARM: sti: stih407-family: Supply defines for CLOCKGEN A0 Lee Jones
2015-02-27 21:14   ` Lee Jones
2015-02-27 21:14 ` [PATCH 2/4] ARM: sti: stih410-clocks: Identify critical clocks as always-on Lee Jones
2015-02-27 21:14   ` Lee Jones
2015-04-02  8:00   ` [STLinux Kernel] " Peter Griffin
2015-04-02  8:00     ` Peter Griffin
2015-04-02  8:00     ` Peter Griffin
2015-02-27 21:14 ` [PATCH 3/4] clk: Provide always-on clock support Lee Jones
2015-02-27 21:14   ` Lee Jones
2015-02-27 21:51   ` Lee Jones
2015-02-27 21:51     ` Lee Jones
2015-02-28  7:52   ` [STLinux Kernel] " Maxime Coquelin
2015-02-28  7:52     ` Maxime Coquelin
2015-02-28  7:52     ` Maxime Coquelin
2015-03-02  8:16     ` Lee Jones
2015-03-02  8:16       ` Lee Jones
2015-03-02  8:16       ` Lee Jones
2015-04-01  1:13       ` Michael Turquette
2015-04-01  1:13         ` Michael Turquette
2015-02-28  9:21   ` Jassi Brar
2015-02-28  9:21     ` Jassi Brar
2015-02-28  9:21     ` Jassi Brar
2015-03-02  8:36     ` Lee Jones
2015-03-02  8:36       ` Lee Jones
2015-03-02  8:36       ` Lee Jones
2015-03-02 10:08       ` Jassi Brar
2015-03-02 10:08         ` Jassi Brar
2015-03-02 10:08         ` Jassi Brar
2015-03-02 10:18         ` Lee Jones
2015-03-02 10:18           ` Lee Jones
2015-03-02 10:25           ` [STLinux Kernel] " Maxime Coquelin
2015-03-02 10:25             ` Maxime Coquelin
2015-03-02 10:25             ` Maxime Coquelin
2015-03-02 10:32             ` Lee Jones
2015-03-02 10:32               ` Lee Jones
2015-03-02 10:28           ` Jassi Brar
2015-03-02 10:28             ` Jassi Brar
2015-03-02 10:28             ` Jassi Brar
2015-03-02 10:40             ` Lee Jones
2015-03-02 10:40               ` Lee Jones
2015-04-01  1:42             ` Michael Turquette
2015-04-01  1:42               ` Michael Turquette
2015-04-01  1:42               ` Michael Turquette
2015-04-02  4:39               ` Jassi Brar
2015-04-02  4:39                 ` Jassi Brar
2015-04-02  7:10                 ` Lee Jones [this message]
2015-04-02  7:10                   ` Lee Jones
2015-02-27 21:14 ` [PATCH 4/4] clk: dt: Introduce binding for " Lee Jones
2015-02-27 21:14   ` Lee Jones
2015-04-02  8:12 ` [STLinux Kernel] [PATCH 0/4] clk: Provide support for always-on clocks Peter Griffin
2015-04-02  8:12   ` Peter Griffin
2015-04-02  8:12   ` Peter Griffin
2015-04-02  9:45   ` Gabriel Fernandez
2015-04-02  9:45     ` Gabriel Fernandez
2015-04-02 10:53     ` Lee Jones
2015-04-02 10:53       ` Lee Jones
2015-04-02 10:58     ` Lee Jones
2015-04-02 10:58       ` Lee Jones
2015-04-02 10:52   ` Lee Jones
2015-04-02 10:52     ` Lee Jones

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=20150402071027.GW9447@x1 \
    --to=lee.jones@linaro.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 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.