All of lore.kernel.org
 help / color / mirror / Atom feed
From: swarren@wwwdotorg.org (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC 1/1] clk: Add notifier support in clk_prepare_enable/clk_disable_unprepare
Date: Wed, 13 Mar 2013 12:10:50 -0600	[thread overview]
Message-ID: <5140C12A.4060900@wwwdotorg.org> (raw)
In-Reply-To: <1363153204.3311.14.camel@bilhuang-vm1>

On 03/12/2013 11:40 PM, Bill Huang wrote:
> On Wed, 2013-03-13 at 13:24 +0800, Stephen Warren wrote:
>> On 03/12/2013 11:08 PM, Bill Huang wrote:
>>> On Wed, 2013-03-13 at 12:42 +0800, Stephen Warren wrote:
>>>> On 03/12/2013 07:47 PM, Bill Huang wrote:
>>>>> On Tue, 2013-03-12 at 21:40 +0800, Russell King - ARM Linux wrote:
>>>>>> On Tue, Mar 12, 2013 at 05:37:41AM -0700, Bill Huang wrote:
>>>>>>> Add the below four notifier events so drivers which are interested in
>>>>>>> knowing the clock status can act accordingly. This is extremely useful
>>>>>>> in some of the DVFS (Dynamic Voltage Frequency Scaling) design.
>>>>>>>
>>>>>>> PRE_CLK_ENABLE
>>>>>>> POST_CLK_ENABLE
>>>>>>> PRE_CLK_DISABLE
>>>>>>> POST_CLK_DISABLE
...
>>> Thanks, I know the point, but unfortunately there is no good choice for
>>> hooking this since those low level functions clk_enable/clk_disable will
>>> be called in interrupt context so it is not possible to send notify. We
>>> might need to come out a better approach if we can think of any.
>>> Currently I still think this is acceptable (Having all the drivers which
>>> are using our interested clocks call these function to enable/disable
>>> clock in their runtime_pm calls) though it's not perfect. 
>>
>> No, that definitely won't work. Not all drivers use those APIs, nor
>> should they.
>>
> That will be too bad, it looks like we deadlock in the mechanism, we
> cannot change existing drivers behavior (that means some call
> clk_disable/enable directly, some are not), and we cannot hook notifier
> in clk_disable/enable either, that means there seems no any chance to
> get what we want, any idea?

I don't know the correct answer.

But I have a question: Why can't we run notifications from the real
clk_enable? Does the notification mechanism itself inherently block, or
are we worried that implementations/receivers of these notifications
might block. Perhaps we can simply define that these notification types
may be triggered in atomic context and hence implementations have to
support executing in atomic context. Is possible to make that a
requirement? Is it possible to implement the code that receives these
notifications in atomic context?

Is it possible to defer triggering of notifications to some non-atomic
context, even if they happen in an atomic context?

I also wonder if this is the right conceptual level to be hooking into
the system. Perhaps DVFS is not something that should be triggered by
noticing that clocks have changed rates, but rather it should be some
form of higher layer that controls (calls into) both the regulator and
clock APIs?

WARNING: multiple messages have this Message-ID (diff)
From: Stephen Warren <swarren@wwwdotorg.org>
To: Bill Huang <bilhuang@nvidia.com>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>,
	"mturquette@linaro.org" <mturquette@linaro.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linaro-dev@lists.linaro.org" <linaro-dev@lists.linaro.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"patches@linaro.org" <patches@linaro.org>
Subject: Re: [RFC 1/1] clk: Add notifier support in clk_prepare_enable/clk_disable_unprepare
Date: Wed, 13 Mar 2013 12:10:50 -0600	[thread overview]
Message-ID: <5140C12A.4060900@wwwdotorg.org> (raw)
In-Reply-To: <1363153204.3311.14.camel@bilhuang-vm1>

On 03/12/2013 11:40 PM, Bill Huang wrote:
> On Wed, 2013-03-13 at 13:24 +0800, Stephen Warren wrote:
>> On 03/12/2013 11:08 PM, Bill Huang wrote:
>>> On Wed, 2013-03-13 at 12:42 +0800, Stephen Warren wrote:
>>>> On 03/12/2013 07:47 PM, Bill Huang wrote:
>>>>> On Tue, 2013-03-12 at 21:40 +0800, Russell King - ARM Linux wrote:
>>>>>> On Tue, Mar 12, 2013 at 05:37:41AM -0700, Bill Huang wrote:
>>>>>>> Add the below four notifier events so drivers which are interested in
>>>>>>> knowing the clock status can act accordingly. This is extremely useful
>>>>>>> in some of the DVFS (Dynamic Voltage Frequency Scaling) design.
>>>>>>>
>>>>>>> PRE_CLK_ENABLE
>>>>>>> POST_CLK_ENABLE
>>>>>>> PRE_CLK_DISABLE
>>>>>>> POST_CLK_DISABLE
...
>>> Thanks, I know the point, but unfortunately there is no good choice for
>>> hooking this since those low level functions clk_enable/clk_disable will
>>> be called in interrupt context so it is not possible to send notify. We
>>> might need to come out a better approach if we can think of any.
>>> Currently I still think this is acceptable (Having all the drivers which
>>> are using our interested clocks call these function to enable/disable
>>> clock in their runtime_pm calls) though it's not perfect. 
>>
>> No, that definitely won't work. Not all drivers use those APIs, nor
>> should they.
>>
> That will be too bad, it looks like we deadlock in the mechanism, we
> cannot change existing drivers behavior (that means some call
> clk_disable/enable directly, some are not), and we cannot hook notifier
> in clk_disable/enable either, that means there seems no any chance to
> get what we want, any idea?

I don't know the correct answer.

But I have a question: Why can't we run notifications from the real
clk_enable? Does the notification mechanism itself inherently block, or
are we worried that implementations/receivers of these notifications
might block. Perhaps we can simply define that these notification types
may be triggered in atomic context and hence implementations have to
support executing in atomic context. Is possible to make that a
requirement? Is it possible to implement the code that receives these
notifications in atomic context?

Is it possible to defer triggering of notifications to some non-atomic
context, even if they happen in an atomic context?

I also wonder if this is the right conceptual level to be hooking into
the system. Perhaps DVFS is not something that should be triggered by
noticing that clocks have changed rates, but rather it should be some
form of higher layer that controls (calls into) both the regulator and
clock APIs?

  reply	other threads:[~2013-03-13 18:10 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-12 12:37 [RFC 1/1] clk: Add notifier support in clk_prepare_enable/clk_disable_unprepare Bill Huang
2013-03-12 12:37 ` Bill Huang
2013-03-12 13:40 ` Russell King - ARM Linux
2013-03-12 13:40   ` Russell King - ARM Linux
2013-03-13  1:47   ` Bill Huang
2013-03-13  1:47     ` Bill Huang
2013-03-13  4:42     ` Stephen Warren
2013-03-13  4:42       ` Stephen Warren
2013-03-13  5:08       ` Bill Huang
2013-03-13  5:08         ` Bill Huang
2013-03-13  5:24         ` Stephen Warren
2013-03-13  5:24           ` Stephen Warren
2013-03-13  5:40           ` Bill Huang
2013-03-13  5:40             ` Bill Huang
2013-03-13 18:10             ` Stephen Warren [this message]
2013-03-13 18:10               ` Stephen Warren
2013-03-14  2:15               ` Bill Huang
2013-03-14  2:15                 ` Bill Huang
2013-03-14  9:21                 ` Peter De Schrijver
2013-03-14  9:21                   ` Peter De Schrijver
2013-03-14  9:28                   ` Bill Huang
2013-03-14  9:28                     ` Bill Huang
2013-03-14 17:54                     ` Stephen Warren
2013-03-14 17:54                       ` Stephen Warren
2013-03-15  1:20                       ` Bill Huang
2013-03-15  1:20                         ` Bill Huang
2013-03-15  5:22                         ` Stephen Warren
2013-03-15  5:22                           ` Stephen Warren
2013-03-15  5:48                           ` Bill Huang
2013-03-15  5:48                             ` Bill Huang
2013-03-15  9:39                           ` Peter De Schrijver
2013-03-15  9:39                             ` Peter De Schrijver
2013-03-15 10:08                             ` Ulf Hansson
2013-03-15 10:08                               ` Ulf Hansson
2013-03-15 12:06                               ` Bill Huang
2013-03-15 12:06                                 ` Bill Huang
2013-03-15 12:33                                 ` Ulf Hansson
2013-03-15 12:33                                   ` Ulf Hansson
2013-03-15 19:38                                   ` Stephen Warren
2013-03-15 19:38                                     ` Stephen Warren
2013-03-16  1:54                                     ` Bill Huang
2013-03-16  1:54                                       ` Bill Huang
2013-03-18 10:36                                     ` Ulf Hansson
2013-03-18 10:36                                       ` Ulf Hansson
2013-03-21 22:28                                       ` Mike Turquette
2013-03-21 22:28                                         ` Mike Turquette
2013-03-16  2:23                                   ` Bill Huang
2013-03-16  2:23                                     ` Bill Huang
2013-03-15 17:12                           ` Russell King - ARM Linux
2013-03-15 17:12                             ` Russell King - ARM Linux
2013-03-15 17:09             ` Russell King - ARM Linux
2013-03-15 17:09               ` Russell King - ARM Linux
2013-03-16  2:25               ` Bill Huang
2013-03-16  2:25                 ` Bill Huang
2013-03-15 16:59       ` Russell King - ARM Linux
2013-03-15 16:59         ` Russell King - ARM Linux
2013-03-15 16:57     ` Russell King - ARM Linux
2013-03-15 16:57       ` Russell King - ARM Linux
2013-03-15 18:44       ` Nicolas Pitre
2013-03-15 18:44         ` Nicolas Pitre

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=5140C12A.4060900@wwwdotorg.org \
    --to=swarren@wwwdotorg.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.