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: Tue, 12 Mar 2013 23:24:45 -0600 [thread overview]
Message-ID: <51400D9D.9060305@wwwdotorg.org> (raw)
In-Reply-To: <1363151317.3311.9.camel@bilhuang-vm1>
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
>>>>>
>>>>> Signed-off-by: Bill Huang <bilhuang@nvidia.com>
>>>>
>>>> NAK. *Sigh* NO, this is the wrong level to be doing stuff like this.
>>>>
>>>> The *ONLY* thing that clk_prepare_enable() and clk_prepare_disable() should
>>>> *EVER* be doing is calling clk_prepare(), clk_enable(), clk_disable() and
>>>> clk_unprepare(). Those two functions are *merely* helpers for drivers
>>>> who don't wish to make the individual calls.
>>>>
>>>> Drivers are still completely free to call the individual functions, at
>>>> which point your proposal breaks horribly - and they _do_ call the
>>>> individual functions.
>>>
>>> I'm proposing to give device driver a choice when it knows that some
>>> driver might be interested in knowing its clock's enabled/disabled state
>>> change at runtime, this is very important for centralized DVFS core
>>> driver. It is not meant to be covering all cases especially for drivers
>>> which is not part of the DVFS, so we don't care if it is calling
>>> clk_enable/disable directly or not.
>>
>> I believe the point Russell is making is not that the idea behind this
>> patch is wrong, but simply that the function where you put the hooks is
>> wrong. The hooks should at least be in clk_enable/clk_disable and not
>> clk_prepare_enable/clk_disable_unprepare, since any driver is free to
>> call clk_prepare separately from clk_enable. The hooks should be
>> implemented in the lowest-level common function that all
>> driver-accessible paths call through.
>
> 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.
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: Tue, 12 Mar 2013 23:24:45 -0600 [thread overview]
Message-ID: <51400D9D.9060305@wwwdotorg.org> (raw)
In-Reply-To: <1363151317.3311.9.camel@bilhuang-vm1>
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
>>>>>
>>>>> Signed-off-by: Bill Huang <bilhuang@nvidia.com>
>>>>
>>>> NAK. *Sigh* NO, this is the wrong level to be doing stuff like this.
>>>>
>>>> The *ONLY* thing that clk_prepare_enable() and clk_prepare_disable() should
>>>> *EVER* be doing is calling clk_prepare(), clk_enable(), clk_disable() and
>>>> clk_unprepare(). Those two functions are *merely* helpers for drivers
>>>> who don't wish to make the individual calls.
>>>>
>>>> Drivers are still completely free to call the individual functions, at
>>>> which point your proposal breaks horribly - and they _do_ call the
>>>> individual functions.
>>>
>>> I'm proposing to give device driver a choice when it knows that some
>>> driver might be interested in knowing its clock's enabled/disabled state
>>> change at runtime, this is very important for centralized DVFS core
>>> driver. It is not meant to be covering all cases especially for drivers
>>> which is not part of the DVFS, so we don't care if it is calling
>>> clk_enable/disable directly or not.
>>
>> I believe the point Russell is making is not that the idea behind this
>> patch is wrong, but simply that the function where you put the hooks is
>> wrong. The hooks should at least be in clk_enable/clk_disable and not
>> clk_prepare_enable/clk_disable_unprepare, since any driver is free to
>> call clk_prepare separately from clk_enable. The hooks should be
>> implemented in the lowest-level common function that all
>> driver-accessible paths call through.
>
> 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.
next prev parent reply other threads:[~2013-03-13 5:24 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 [this message]
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
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=51400D9D.9060305@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.