All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Boyd <sboyd@codeaurora.org>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: linux-sh@vger.kernel.org, Greg KH <gregkh@suse.de>,
	LKML <linux-kernel@vger.kernel.org>,
	Grant Likely <grant.likely@secretlab.ca>,
	Linux PM mailing list <linux-pm@lists.linux-foundation.org>
Subject: Re: [Update x3][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v6)
Date: Tue, 03 May 2011 10:00:58 -0700	[thread overview]
Message-ID: <4DC034CA.6000505__37539.2416179695$1304442191$gmane$org@codeaurora.org> (raw)
In-Reply-To: <201104300004.02601.rjw@sisk.pl>

On 04/29/2011 03:04 PM, Rafael J. Wysocki wrote:
> +
> +/**
> + * enable_clock - Enable a device clock.
> + * @dev: Device whose clock is to be enabled.
> + * @con_id: Connection ID of the clock.
> + */
> +static void enable_clock(struct device *dev, const char *con_id)
> +{
> +	struct clk *clk;
> +
> +	clk = clk_get(dev, con_id);
> +	if (!IS_ERR(clk)) {
> +		clk_enable(clk);
> +		clk_put(clk);
> +		dev_info(dev, "Runtime PM disabled, clock forced on.\n");
> +	}
> +}

This doesn't make much sense to me. You're getting a clock and then
enabling it and then putting the clock? How can you be so sure that
clk_put() won't one day do some kind of lower power mode on the clock
when clk_put() is called on it? I don't think anyone does anything
today, but I don't think its safe to assume that clk_put() won't try to
forcibly shut off the clock once all clk_get() callers have clk_put().

Perhaps we should document the meaning of clk_enable() followed by
clk_put() somewhere instead?

> +
> +/**
> + * disable_clock - Disable a device clock.
> + * @dev: Device whose clock is to be disabled.
> + * @con_id: Connection ID of the clock.
> + */
> +static void disable_clock(struct device *dev, const char *con_id)
> +{
> +	struct clk *clk;
> +
> +	clk = clk_get(dev, con_id);
> +	if (!IS_ERR(clk)) {
> +		clk_disable(clk);
> +		clk_put(clk);
> +		dev_info(dev, "Runtime PM disabled, clock forced off.\n");
> +	}
> +}

This might not be as bad, but it looks like a similar problem.

> -
> -static int platform_bus_notify(struct notifier_block *nb,
> -			       unsigned long action, void *data)
> -{
> -	struct device *dev = data;
> -	struct clk *clk;
> -
> -	dev_dbg(dev, "platform_bus_notify() %ld !\n", action);
> -
> -	switch (action) {
> -	case BUS_NOTIFY_BIND_DRIVER:
> -		clk = clk_get(dev, NULL);
> -		if (!IS_ERR(clk)) {
> -			clk_enable(clk);
> -			clk_put(clk);
> -			dev_info(dev, "runtime pm disabled, clock forced on\n");
> -		}
> -		break;
> -	case BUS_NOTIFY_UNBOUND_DRIVER:
> -		clk = clk_get(dev, NULL);
> -		if (!IS_ERR(clk)) {
> -			clk_disable(clk);
> -			clk_put(clk);
> -			dev_info(dev, "runtime pm disabled, clock forced off\n");
> -		}

Ah ok I see that it's coming from here.

BTW, whatever is in linux-next is failing to compile:

drivers/base/power/clock_ops.c:391: error: 'con_id' undeclared (first
use in this function)
drivers/base/power/clock_ops.c:391: error: (Each undeclared identifier
is reported only once
drivers/base/power/clock_ops.c:391: error: for each function it appears in.)

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

  reply	other threads:[~2011-05-03 17:00 UTC|newest]

Thread overview: 191+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-13  0:05 [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Rafael J. Wysocki
2011-04-13  0:05 ` Rafael J. Wysocki
2011-04-13 14:17 ` Alan Stern
2011-04-13 14:17 ` [RFC][PATCH] PM: Make power domain callbacks take precedence Alan Stern
2011-04-13 14:17   ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Alan Stern
2011-04-13 16:15   ` [RFC][PATCH] PM: Make power domain callbacks take precedence over Grant Likely
2011-04-13 16:15     ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Grant Likely
2011-04-14 23:12     ` Rafael J. Wysocki
2011-04-14 23:12       ` Rafael J. Wysocki
2011-04-15 14:38       ` [RFC][PATCH] PM: Make power domain callbacks take precedence over Grant Likely
2011-04-15 14:38         ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Grant Likely
2011-04-15 14:38       ` Grant Likely
2011-04-15 14:39       ` Alan Stern
2011-04-15 14:39       ` [RFC][PATCH] PM: Make power domain callbacks take precedence Alan Stern
2011-04-15 14:39         ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Alan Stern
2011-04-14 23:12     ` Rafael J. Wysocki
2011-04-13 16:15   ` Grant Likely
2011-04-14 18:20 ` [RFC][PATCH] PM: Make power domain callbacks take precedence over Magnus Damm
2011-04-14 18:20   ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Magnus Damm
2011-04-14 22:45   ` Rafael J. Wysocki
2011-04-14 22:45   ` Rafael J. Wysocki
2011-04-14 22:45     ` Rafael J. Wysocki
2011-04-15 14:34     ` Alan Stern
2011-04-15 14:34     ` [RFC][PATCH] PM: Make power domain callbacks take precedence Alan Stern
2011-04-15 14:34       ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Alan Stern
2011-04-15 23:18       ` Rafael J. Wysocki
2011-04-15 23:18       ` Rafael J. Wysocki
2011-04-15 23:18         ` Rafael J. Wysocki
2011-04-16 17:15         ` [RFC][PATCH] PM: Make power domain callbacks take precedence Kevin Hilman
2011-04-16 17:15           ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Kevin Hilman
2011-04-16 23:12           ` Rafael J. Wysocki
2011-04-16 23:12             ` Rafael J. Wysocki
2011-04-16 23:12           ` Rafael J. Wysocki
2011-04-16 17:15         ` Kevin Hilman
2011-04-14 18:20 ` Magnus Damm
2011-04-14 23:16 ` [RFC][PATCH 0/2] Remove __weak definitions of platform PM callbacks Rafael J. Wysocki
2011-04-14 23:16   ` Rafael J. Wysocki
2011-04-14 23:18   ` [RFC][PATCH 1/2] shmobile: Use power domains for platform runtime PM Rafael J. Wysocki
2011-04-14 23:18     ` Rafael J. Wysocki
2011-04-14 23:18   ` Rafael J. Wysocki
2011-04-14 23:19   ` [RFC][PATCH 2/2] PM / Platform: Use generic runtime PM callbacks directly Rafael J. Wysocki
2011-04-14 23:19     ` Rafael J. Wysocki
2011-04-14 23:19   ` Rafael J. Wysocki
2011-04-14 23:16 ` [RFC][PATCH 0/2] Remove __weak definitions of platform PM callbacks Rafael J. Wysocki
2011-04-16 17:17 ` [RFC][PATCH] PM: Make power domain callbacks take precedence Kevin Hilman
2011-04-16 17:17   ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Kevin Hilman
2011-04-16 17:17 ` Kevin Hilman
2011-04-16 23:35 ` [PATCH 0/9] PM: Rework shmobile and OMAP runtime PM using power domains Rafael J. Wysocki
2011-04-16 23:35 ` Rafael J. Wysocki
2011-04-16 23:35   ` Rafael J. Wysocki
2011-04-16 23:36   ` [PATCH 1/9] PM: Make power domain callbacks take precedence over subsystem ones Rafael J. Wysocki
2011-04-16 23:36     ` Rafael J. Wysocki
2011-04-16 23:36     ` Rafael J. Wysocki
2011-04-16 23:37   ` [PATCH 2/9] PM: Export platform bus type's default PM callbacks Rafael J. Wysocki
2011-04-16 23:37   ` Rafael J. Wysocki
2011-04-16 23:37     ` Rafael J. Wysocki
2011-04-16 23:38   ` [PATCH 3/9] shmobile: Use power domains for platform runtime PM Rafael J. Wysocki
2011-04-16 23:38     ` Rafael J. Wysocki
2011-04-16 23:38   ` Rafael J. Wysocki
2011-04-16 23:38   ` [PATCH 4/9] PM / Platform: Use generic runtime PM callbacks directly Rafael J. Wysocki
2011-04-16 23:38     ` Rafael J. Wysocki
2011-04-16 23:38   ` Rafael J. Wysocki
2011-04-16 23:39   ` [PATCH 5/9] OMAP2+ / PM: Move runtime PM implementation to use power domains Rafael J. Wysocki
2011-04-16 23:39     ` Rafael J. Wysocki
2011-04-16 23:39   ` Rafael J. Wysocki
2011-04-16 23:40   ` [PATCH 6/9] PM / Runtime: Add subsystem data field to struct dev_pm_info Rafael J. Wysocki
2011-04-16 23:40     ` Rafael J. Wysocki
2011-04-16 23:40     ` Rafael J. Wysocki
2011-04-16 23:42   ` [PATCH 7/9] PM / Runtime: Add generic clock manipulation rountines for runtime PM Rafael J. Wysocki
2011-04-16 23:42     ` Rafael J. Wysocki
2011-04-16 23:42     ` Rafael J. Wysocki
2011-04-18 19:59     ` [Update][PATCH " Rafael J. Wysocki
2011-04-18 19:59     ` Rafael J. Wysocki
2011-04-18 19:59       ` Rafael J. Wysocki
2011-04-19 10:18       ` Magnus Damm
2011-04-19 10:18       ` [Update][PATCH 7/9] PM / Runtime: Add generic clock manipulation Magnus Damm
2011-04-19 10:18         ` [Update][PATCH 7/9] PM / Runtime: Add generic clock manipulation rountines for runtime PM Magnus Damm
2011-04-19 21:42         ` Rafael J. Wysocki
2011-04-19 21:42           ` Rafael J. Wysocki
2011-04-19 21:59           ` Paul Mundt
2011-04-19 21:59             ` Paul Mundt
2011-04-19 22:10             ` Rafael J. Wysocki
2011-04-19 22:10             ` Rafael J. Wysocki
2011-04-19 22:10               ` Rafael J. Wysocki
2011-04-19 22:20               ` Paul Mundt
2011-04-19 22:20                 ` Paul Mundt
2011-04-19 22:20                 ` Paul Mundt
2011-04-19 22:50                 ` Rafael J. Wysocki
2011-04-19 22:50                 ` Rafael J. Wysocki
2011-04-19 22:50                   ` Rafael J. Wysocki
2011-04-19 21:59           ` Paul Mundt
2011-04-19 21:42         ` Rafael J. Wysocki
2011-04-19 10:58     ` [PATCH " Mark Brown
2011-04-19 10:58     ` [linux-pm] [PATCH 7/9] PM / Runtime: Add generic clock Mark Brown
2011-04-19 10:58       ` [linux-pm] [PATCH 7/9] PM / Runtime: Add generic clock manipulation rountines for runtime PM Mark Brown
2011-04-19 21:35       ` Rafael J. Wysocki
2011-04-19 21:35         ` Rafael J. Wysocki
2011-04-20 11:57         ` Mark Brown
2011-04-20 11:57         ` [linux-pm] [PATCH 7/9] PM / Runtime: Add generic clock Mark Brown
2011-04-20 11:57           ` [linux-pm] [PATCH 7/9] PM / Runtime: Add generic clock manipulation rountines for runtime PM Mark Brown
2011-04-19 21:35       ` Rafael J. Wysocki
2011-04-16 23:43   ` [PATCH 8/9] OMAP1 / PM: Use generic clock manipulation routines " Rafael J. Wysocki
2011-04-16 23:43     ` Rafael J. Wysocki
2011-04-18  8:18     ` Paul Mundt
2011-04-18  8:18       ` Paul Mundt
2011-04-18 19:57       ` Rafael J. Wysocki
2011-04-18 19:57       ` Rafael J. Wysocki
2011-04-18 19:57         ` Rafael J. Wysocki
2011-04-18  8:18     ` Paul Mundt
2011-04-16 23:43   ` Rafael J. Wysocki
2011-04-16 23:44   ` [PATCH 9/9] PM: Revert "driver core: platform_bus: allow runtime override of dev_pm_ops" Rafael J. Wysocki
2011-04-16 23:44   ` Rafael J. Wysocki
2011-04-16 23:44     ` Rafael J. Wysocki
2011-04-24 21:30   ` [PATCH 0/9] PM: Rework shmobile and OMAP runtime PM using power domains (v2) Rafael J. Wysocki
2011-04-24 21:30   ` Rafael J. Wysocki
2011-04-24 21:30     ` Rafael J. Wysocki
2011-04-24 21:36     ` [PATCH 1/9] PM: Make power domain callbacks take precedence over subsystem ones Rafael J. Wysocki
2011-04-24 21:36     ` Rafael J. Wysocki
2011-04-24 21:36       ` Rafael J. Wysocki
2011-04-24 21:37     ` [PATCH 2/9] PM: Export platform bus type's default PM callbacks Rafael J. Wysocki
2011-04-24 21:37       ` Rafael J. Wysocki
2011-04-24 21:37     ` Rafael J. Wysocki
2011-04-24 21:38     ` [PATCH 3/9] shmobile: Use power domains for platform runtime PM Rafael J. Wysocki
2011-04-24 21:38       ` Rafael J. Wysocki
2011-04-24 21:38     ` Rafael J. Wysocki
2011-04-24 21:39     ` [PATCH 4/9] PM / Platform: Use generic runtime PM callbacks directly Rafael J. Wysocki
2011-04-24 21:39       ` Rafael J. Wysocki
2011-04-24 21:39     ` Rafael J. Wysocki
2011-04-24 21:41     ` [PATCH 5/9] OMAP2+ / PM: move runtime PM implementation to use device power domains Rafael J. Wysocki
2011-04-24 21:41       ` Rafael J. Wysocki
2011-04-24 21:41     ` Rafael J. Wysocki
2011-04-24 21:42     ` [PATCH 6/9] PM / Runtime: Add subsystem data field to struct dev_pm_info Rafael J. Wysocki
2011-04-24 21:42     ` Rafael J. Wysocki
2011-04-24 21:42       ` Rafael J. Wysocki
2011-04-24 21:42     ` [PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v2) Rafael J. Wysocki
2011-04-24 21:42     ` Rafael J. Wysocki
2011-04-24 21:42       ` Rafael J. Wysocki
2011-04-27 21:48       ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v3) Rafael J. Wysocki
2011-04-27 21:48       ` Rafael J. Wysocki
2011-04-27 21:48         ` Rafael J. Wysocki
2011-04-27 23:04         ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation Colin Cross
2011-04-27 23:04           ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v3) Colin Cross
2011-04-28  0:58           ` Rafael J. Wysocki
2011-04-28  0:58           ` Rafael J. Wysocki
2011-04-28  0:58             ` Rafael J. Wysocki
2011-04-28  1:06             ` Rafael J. Wysocki
2011-04-28  1:06               ` Rafael J. Wysocki
2011-04-28  1:33               ` Rafael J. Wysocki
2011-04-28  1:33               ` Rafael J. Wysocki
2011-04-28  1:33                 ` Rafael J. Wysocki
2011-04-28 19:36                 ` [Update x2][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v5) Rafael J. Wysocki
2011-04-28 19:36                   ` Rafael J. Wysocki
2011-04-29 19:35                   ` Stephen Boyd
2011-04-29 19:35                   ` [Update x2][PATCH 7/9] PM / Runtime: Generic clock manipulation Stephen Boyd
2011-04-29 19:35                     ` [Update x2][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v5) Stephen Boyd
2011-04-29 20:29                     ` Rafael J. Wysocki
2011-04-29 20:29                       ` Rafael J. Wysocki
2011-04-29 22:04                       ` [Update x3][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v6) Rafael J. Wysocki
2011-04-29 22:04                       ` Rafael J. Wysocki
2011-04-29 22:04                         ` Rafael J. Wysocki
2011-05-03 17:00                         ` Stephen Boyd [this message]
2011-05-03 17:00                         ` [Update x3][PATCH 7/9] PM / Runtime: Generic clock manipulation Stephen Boyd
2011-05-03 17:00                           ` [Update x3][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v6) Stephen Boyd
2011-05-03 17:38                           ` Rafael J. Wysocki
2011-05-03 17:38                             ` Rafael J. Wysocki
2011-05-03 17:38                           ` Rafael J. Wysocki
2011-04-29 20:29                     ` [Update x2][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v5) Rafael J. Wysocki
2011-04-28 19:36                 ` Rafael J. Wysocki
2011-04-28  1:06             ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v3) Rafael J. Wysocki
2011-04-29 20:50             ` Grant Likely
2011-04-29 20:50             ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation Grant Likely
2011-04-29 20:50               ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v3) Grant Likely
2011-04-29 21:07               ` Rafael J. Wysocki
2011-04-29 21:07                 ` Rafael J. Wysocki
2011-04-29 21:07               ` Rafael J. Wysocki
2011-04-27 23:04         ` Colin Cross
2011-04-24 21:43     ` [PATCH 8/9] OMAP1 / PM: Use generic clock manipulation routines for runtime PM Rafael J. Wysocki
2011-04-24 21:43       ` Rafael J. Wysocki
2011-05-16 10:16       ` Kevin Hilman
2011-05-16 10:16         ` Kevin Hilman
2011-05-16 18:26         ` Rafael J. Wysocki
2011-05-16 18:26           ` Rafael J. Wysocki
2011-05-16 18:26         ` Rafael J. Wysocki
2011-05-16 10:16       ` Kevin Hilman
2011-04-24 21:43     ` Rafael J. Wysocki
2011-04-24 21:44     ` [PATCH 9/9] PM: Revert "driver core: platform_bus: allow runtime override of dev_pm_ops" Rafael J. Wysocki
2011-04-24 21:44       ` Rafael J. Wysocki
2011-04-24 21:44     ` Rafael J. Wysocki
2011-04-24 23:36     ` [PATCH 0/9] PM: Rework shmobile and OMAP runtime PM using power domains (v2) Greg KH
2011-04-24 23:36     ` [PATCH 0/9] PM: Rework shmobile and OMAP runtime PM using power Greg KH
2011-04-24 23:36       ` [PATCH 0/9] PM: Rework shmobile and OMAP runtime PM using power domains (v2) Greg KH

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='4DC034CA.6000505__37539.2416179695$1304442191$gmane$org@codeaurora.org' \
    --to=sboyd@codeaurora.org \
    --cc=grant.likely@secretlab.ca \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=rjw@sisk.pl \
    /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.