From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Ben Dooks <ben.dooks@codethink.co.uk>
Cc: linux-kernel@lists.codethink.co.uk,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
Pavel Machek <pavel@ucw.cz>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-pm@vger.kernel.org, linux-sh@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/3] power: clock_ops.c: fixup clk prepare/unprepare count
Date: Sun, 12 Jan 2014 23:04:56 +0100 [thread overview]
Message-ID: <2133074.4EFCIDJZXE@avalon> (raw)
In-Reply-To: <1389445540-21426-1-git-send-email-ben.dooks@codethink.co.uk>
Hi Ben,
Thank you for the patch.
On Saturday 11 January 2014 13:05:38 Ben Dooks wrote:
> The drivers/base/power/clock_ops.c file is causing warnings from
> the clock driver (as shown below) due to failing to do a clk_prepare()
> call before enabling a clock. It also fails to check the balance of
> prepare/unprepare as __pm_clk_remove() do clk_disable_unprepare() call.
>
> This bug has probably been in since commit b2476490e ("clk: introduce
> the common clock framework") as the warning was part of the original
> commit. It is strange that it has not been noticed (although this has
> also been coupled with a failure for certain SH builds to not build the
> necessary glue to use this method of controlling the clocks).
>
> In summary, this is probably needed in several stable branches but need
> advice on which ones.
>
> On the Renesas Lager board, this causes numerous warnings of the following
> and even worse the clock system will not enable clocks, causing drivers
> that are in development to fail to work:
>
> WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:883 __clk_enable+0x2c/0xa0()
I've never noticed this on Lager, probably because Lager multiplatform doesn't
make use of clock_ops.c as drivers/sh/pm_runtime.c (which you addressed in
another patch that I've also replied to). I'm thus not sure we need to apply
this as a fix and backport it to stable branches.
> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
> Cc: Pavel Machek <pavel@ucw.cz>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: linux-pm@vger.kernel.org
> Cc: linux-sh@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
> Reviewed-by: Ian Molton <ian.molton@codethink.co.uk>
> ---
> drivers/base/power/clock_ops.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/base/power/clock_ops.c b/drivers/base/power/clock_ops.c
> index 9d8fde7..b9dd8fa 100644
> --- a/drivers/base/power/clock_ops.c
> +++ b/drivers/base/power/clock_ops.c
> @@ -43,6 +43,7 @@ static void pm_clk_acquire(struct device *dev, struct
> pm_clock_entry *ce) if (IS_ERR(ce->clk)) {
> ce->status = PCE_STATUS_ERROR;
> } else {
> + clk_prepare(ce->clk);
> ce->status = PCE_STATUS_ACQUIRED;
> dev_dbg(dev, "Clock %s managed by runtime PM.\n", ce->con_id);
> }
> @@ -99,10 +100,12 @@ static void __pm_clk_remove(struct pm_clock_entry *ce)
>
> if (ce->status < PCE_STATUS_ERROR) {
> if (ce->status == PCE_STATUS_ENABLED)
> - clk_disable_unprepare(ce->clk);
> + clk_disable(ce->clk);
>
> - if (ce->status >= PCE_STATUS_ACQUIRED)
> + if (ce->status >= PCE_STATUS_ACQUIRED) {
> + clk_unprepare(ce->clk);
> clk_put(ce->clk);
> + }
> }
>
> kfree(ce->con_id);
--
Regards,
Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Ben Dooks <ben.dooks@codethink.co.uk>
Cc: linux-kernel@lists.codethink.co.uk,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
Pavel Machek <pavel@ucw.cz>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-pm@vger.kernel.org, linux-sh@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/3] power: clock_ops.c: fixup clk prepare/unprepare count
Date: Sun, 12 Jan 2014 22:04:56 +0000 [thread overview]
Message-ID: <2133074.4EFCIDJZXE@avalon> (raw)
In-Reply-To: <1389445540-21426-1-git-send-email-ben.dooks@codethink.co.uk>
Hi Ben,
Thank you for the patch.
On Saturday 11 January 2014 13:05:38 Ben Dooks wrote:
> The drivers/base/power/clock_ops.c file is causing warnings from
> the clock driver (as shown below) due to failing to do a clk_prepare()
> call before enabling a clock. It also fails to check the balance of
> prepare/unprepare as __pm_clk_remove() do clk_disable_unprepare() call.
>
> This bug has probably been in since commit b2476490e ("clk: introduce
> the common clock framework") as the warning was part of the original
> commit. It is strange that it has not been noticed (although this has
> also been coupled with a failure for certain SH builds to not build the
> necessary glue to use this method of controlling the clocks).
>
> In summary, this is probably needed in several stable branches but need
> advice on which ones.
>
> On the Renesas Lager board, this causes numerous warnings of the following
> and even worse the clock system will not enable clocks, causing drivers
> that are in development to fail to work:
>
> WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:883 __clk_enable+0x2c/0xa0()
I've never noticed this on Lager, probably because Lager multiplatform doesn't
make use of clock_ops.c as drivers/sh/pm_runtime.c (which you addressed in
another patch that I've also replied to). I'm thus not sure we need to apply
this as a fix and backport it to stable branches.
> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
> Cc: Pavel Machek <pavel@ucw.cz>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: linux-pm@vger.kernel.org
> Cc: linux-sh@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
> Reviewed-by: Ian Molton <ian.molton@codethink.co.uk>
> ---
> drivers/base/power/clock_ops.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/base/power/clock_ops.c b/drivers/base/power/clock_ops.c
> index 9d8fde7..b9dd8fa 100644
> --- a/drivers/base/power/clock_ops.c
> +++ b/drivers/base/power/clock_ops.c
> @@ -43,6 +43,7 @@ static void pm_clk_acquire(struct device *dev, struct
> pm_clock_entry *ce) if (IS_ERR(ce->clk)) {
> ce->status = PCE_STATUS_ERROR;
> } else {
> + clk_prepare(ce->clk);
> ce->status = PCE_STATUS_ACQUIRED;
> dev_dbg(dev, "Clock %s managed by runtime PM.\n", ce->con_id);
> }
> @@ -99,10 +100,12 @@ static void __pm_clk_remove(struct pm_clock_entry *ce)
>
> if (ce->status < PCE_STATUS_ERROR) {
> if (ce->status = PCE_STATUS_ENABLED)
> - clk_disable_unprepare(ce->clk);
> + clk_disable(ce->clk);
>
> - if (ce->status >= PCE_STATUS_ACQUIRED)
> + if (ce->status >= PCE_STATUS_ACQUIRED) {
> + clk_unprepare(ce->clk);
> clk_put(ce->clk);
> + }
> }
>
> kfree(ce->con_id);
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2014-01-12 22:04 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-11 13:05 [PATCH 1/3] power: clock_ops.c: fixup clk prepare/unprepare count Ben Dooks
2014-01-11 13:05 ` Ben Dooks
2014-01-11 13:05 ` [PATCH 2/3] power: clock_ops.c: check return of clk_enable() in pm_clk_resume() Ben Dooks
2014-01-11 13:05 ` Ben Dooks
2014-01-13 19:55 ` Rafael J. Wysocki
2014-01-13 19:55 ` Rafael J. Wysocki
2014-01-14 12:02 ` Ben Dooks
2014-01-14 12:02 ` Ben Dooks
2014-01-11 13:05 ` [PATCH 3/3] power: clock_ops.c: report clock errors from clk_enable() Ben Dooks
2014-01-11 13:05 ` Ben Dooks
2014-01-12 22:04 ` Laurent Pinchart [this message]
2014-01-12 22:04 ` [PATCH 1/3] power: clock_ops.c: fixup clk prepare/unprepare count Laurent Pinchart
2014-01-13 6:28 ` Ben Dooks
2014-01-13 8:50 ` Geert Uytterhoeven
2014-01-13 8:50 ` Geert Uytterhoeven
2014-01-13 9:21 ` Ben Dooks
-- strict thread matches above, loose matches on Subject: below --
2014-01-14 12:23 [RESEND] v2: clock_ops.c fixes Ben Dooks
2014-01-14 12:23 ` [PATCH 1/3] power: clock_ops.c: fixup clk prepare/unprepare count Ben Dooks
2014-01-14 12:23 ` Ben Dooks
2014-01-16 0:54 ` Rafael J. Wysocki
2014-01-16 1:08 ` Rafael J. Wysocki
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=2133074.4EFCIDJZXE@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=ben.dooks@codethink.co.uk \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@lists.codethink.co.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=rjw@rjwysocki.net \
/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.