All of lore.kernel.org
 help / color / mirror / Atom feed
From: mturquette@linaro.org (Mike Turquette)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/5] clk: notifier handler for dynamic voltage scaling
Date: Fri, 01 Mar 2013 12:48:32 -0800	[thread overview]
Message-ID: <20130301204832.6210.40653@quantum> (raw)
In-Reply-To: <20130301182234.6210.63879@quantum>

Quoting Mike Turquette (2013-03-01 10:22:34)
> Quoting Bill Huang (2013-03-01 01:41:31)
> > On Thu, 2013-02-28 at 12:49 +0800, Mike Turquette wrote:
> > > Dynamic voltage and frequency scaling (dvfs) is a common power saving
> > > technique in many of today's modern processors.  This patch introduces a
> > > common clk rate-change notifier handler which scales voltage
> > > appropriately whenever clk_set_rate is called on an affected clock.
> > 
> > I really think clk_enable and clk_disable should also be triggering
> > notifier call and DVFS should act accordingly since there are cases
> > drivers won't set clock rate but instead disable its clock directly, do
> > you agree?
> > > 
> 
> Hi Bill,
> 
> I'll think about this.  Perhaps a better solution would be to adapt
> these drivers to runtime PM.  Then a call to runtime_pm_put() would
> result in a call to clk_disable(...) and regulator_set_voltage(...).
> 
> There is no performance-based equivalent to runtime PM, which is one
> reason why clk_set_rate is a likely entry point into dvfs.  But for
> operations that have nice api's like runtime PM it would be better to
> use those interfaces and not overload the clk.h api unnecessarily.
> 

Bill,

I wasn't thinking at all when I wrote this.  Trying to rush to the
airport I guess...

clk_enable() and clk_disable() must not sleep and all operations are
done under a spinlock.  So this rules out most use of notifiers.  It is
expected for some drivers to very aggressively enable/disable clocks in
interrupt handlers so scaling voltage as a function of clk_{en|dis}able
calls is also likely out of the question.

Some platforms have chosen to implement voltage scaling in their
.prepare callbacks.  I personally do not like this and still prefer
drivers be adapted to runtime pm and let those callbacks handle voltage
scaling along with clock handling.

Regards,
Mike

> > > There are three prerequisites to using this feature:
> > > 
> > > 1) the affected clocks must be using the common clk framework
> > > 2) voltage must be scaled using the regulator framework
> > > 3) clock frequency and regulator voltage values must be paired via the
> > > OPP library
> > 
> > Just a note, Tegra Core won't meet prerequisite #3 since each regulator
> > voltage values is associated with clocks driving those many sub-HW
> > blocks in it.
> 
> This patch isn't the one and only way to perform dvfs.  It is just a
> helper function for registering notifier handlers for systems that meet
> the above three requirements.  Even if you do not use the OPP library
> there is no reason why you could not register your own rate-change
> notifier handler to implement dvfs using whatever lookup-table you use
> today.
> 
> And patches are welcome to extend the usefulness of this helper.  I'd
> like as many people to benefit from this mechanism as possible.
> 
> At some point we should think hard about DT bindings for these operating
> points...
> 
> Regards,
> Mike

  reply	other threads:[~2013-03-01 20:48 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-28  4:49 [PATCH v3 0/5] common clk framework reentrancy & dvfs, take 3 Mike Turquette
2013-02-28  4:49 ` Mike Turquette
2013-02-28  4:49 ` [PATCH 1/5] clk: allow reentrant calls into the clk framework Mike Turquette
2013-02-28  4:49   ` Mike Turquette
2013-02-28  9:54   ` Ulf Hansson
2013-02-28  9:54     ` Ulf Hansson
2013-03-18 20:15     ` Mike Turquette
2013-03-18 21:00       ` Russell King - ARM Linux
2013-03-18 21:00         ` Russell King - ARM Linux
2013-03-18 21:35         ` Mike Turquette
2013-03-27  3:33   ` Bill Huang
2013-03-27  3:33     ` Bill Huang
2013-03-27  8:38     ` Mike Turquette
2013-02-28  4:49 ` [PATCH 2/5] clk: notifier handler for dynamic voltage scaling Mike Turquette
2013-02-28  4:49   ` Mike Turquette
2013-03-01  9:41   ` Bill Huang
2013-03-01  9:41     ` Bill Huang
2013-03-01 18:22     ` Mike Turquette
2013-03-01 20:48       ` Mike Turquette [this message]
2013-03-02  2:55         ` Bill Huang
2013-03-02  2:55           ` Bill Huang
2013-03-02  8:22           ` Richard Zhao
2013-03-02  8:22             ` Richard Zhao
2013-03-03 10:54             ` Mike Turquette
2013-03-03 10:54               ` Mike Turquette
2013-03-03 13:27               ` Richard Zhao
2013-03-03 13:27                 ` Richard Zhao
2013-03-04  7:25                 ` Mike Turquette
2013-03-13 13:59                   ` Ulf Hansson
2013-03-13 13:59                     ` Ulf Hansson
2013-03-01 20:49     ` Stephen Warren
2013-03-01 20:49       ` Stephen Warren
2013-03-02  2:58       ` Bill Huang
2013-03-02  2:58         ` Bill Huang
2013-03-10 10:21   ` Francesco Lavra
2013-03-10 10:21     ` Francesco Lavra
2013-04-02 17:49   ` Taras Kondratiuk
2013-04-02 17:49     ` Taras Kondratiuk
2013-02-28  4:49 ` [PATCH 3/5] cpufreq: omap: scale regulator from clk notifier Mike Turquette
2013-02-28  4:49   ` Mike Turquette
2013-02-28  4:49 ` [PATCH 4/5] HACK: set_parent callback for OMAP4 non-core DPLLs Mike Turquette
2013-02-28  4:49   ` Mike Turquette
2013-02-28  4:49 ` [PATCH 5/5] HACK: omap: opp: add fake 400MHz OPP to bypass MPU Mike Turquette
2013-02-28  4:49   ` Mike Turquette

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=20130301204832.6210.40653@quantum \
    --to=mturquette@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.