linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Saravana Kannan <skannan@codeaurora.org>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Nicolas Pitre" <nicolas.pitre@linaro.org>,
	"Dima Zavin" <dmitriyz@google.com>,
	"Lorenzo Pieralisi" <Lorenzo.Pieralisi@arm.com>,
	linux-sh@vger.kernel.org,
	"Ben Herrenschmidt" <benh@kernel.crashing.org>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Jassi Brar" <jassisinghbrar@gmail.com>,
	linux-kernel@vger.kernel.org, "Paul Mundt" <lethal@linux-sh.org>,
	"Ben Dooks" <ben-linux@fluff.org>,
	"Vincent Guittot" <vincent.guittot@linaro.org>,
	"Jeremy Kerr" <jeremy.kerr@canonical.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: Locking in the clk API, part 2: clk_prepare/clk_unprepare
Date: Tue, 01 Feb 2011 12:57:57 -0800	[thread overview]
Message-ID: <4D4873D5.70203@codeaurora.org> (raw)
In-Reply-To: <20110201152820.GQ31216@n2100.arm.linux.org.uk>

On 02/01/2011 07:28 AM, Russell King - ARM Linux wrote:
> On Tue, Feb 01, 2011 at 04:22:03PM +0100, Uwe Kleine-König wrote:
>> Full ack.  (I wonder if you misunderstood me or wanted to put my
>> statement into more words.  Jassi didn't like that a clk_enable without
>> a previous clk_prepare worked on some platforms and on others it
>> doesn't.  With BUG_ON(clk->ops->prepare&&  !clk->prepare_count) in
>> clk_enable we have exactly this situation.)
>
> Even with a NULL clk->ops->prepare function, we still want drivers to
> have called clk_prepare().  So we can do something like:
>
> 	if (WARN_ON(clk->prepare_count == 0))
> 		return -EINVAL;
>
> in clk_enable() should be sufficient and noisy enough not to be missed.

This code will only catch the error when it actually happens and will 
even miss catching some of them (if timed right -- unprepare happens in 
the other core after this check is executed).

I really wish there was something better we could do to help driver devs 
catch errors of calling enable without calling prepare(). Some thing 
like spin lock debug, or the might_sleeps() inside mutexes, etc.

Hmm... Jeremy, how about doing a similar check in the unprepare code? 
You could WARN/BUG ON the prepare count going to zero when the enable 
count is still non-zero?

Thanks,
Saravana

-- 
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-02-01 20:58 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-01  9:11 Locking in the clk API, part 2: clk_prepare/clk_unprepare Jeremy Kerr
2011-02-01 10:54 ` Uwe Kleine-König
2011-02-01 13:05   ` Jassi Brar
2011-02-01 14:00     ` Uwe Kleine-König
2011-02-01 15:14       ` Russell King - ARM Linux
2011-02-01 15:22         ` Uwe Kleine-König
2011-02-01 15:28           ` Russell King - ARM Linux
2011-02-01 20:57             ` Saravana Kannan [this message]
2011-02-02  2:31             ` Jassi Brar
2011-02-01 13:15   ` Russell King - ARM Linux
2011-02-01 14:18     ` Uwe Kleine-König
2011-02-01 14:39       ` Russell King - ARM Linux
2011-02-01 15:18         ` Uwe Kleine-König
2011-02-01 15:24           ` Russell King - ARM Linux
2011-02-01 15:53             ` Uwe Kleine-König
2011-02-01 17:06               ` Russell King - ARM Linux
2011-02-01 19:32                 ` Uwe Kleine-König
2011-02-01 19:56                   ` Russell King - ARM Linux
2011-02-01 20:21                     ` Saravana Kannan
2011-02-01 20:43                       ` Uwe Kleine-König
2011-02-04  9:33                         ` Richard Zhao
2011-02-01 20:06                   ` Nicolas Pitre
2011-02-01 20:33             ` Saravana Kannan
2011-02-01 20:36               ` Russell King - ARM Linux
2011-02-01 20:59             ` Stephen Boyd
2011-02-01 21:24               ` Russell King - ARM Linux
2011-02-04  9:54                 ` Richard Zhao
2011-02-04 10:21                   ` Uwe Kleine-König
2011-02-04 10:57                     ` Russell King - ARM Linux
2011-02-04 10:48                   ` Russell King - ARM Linux
2011-02-04 11:04                     ` Jassi Brar
2011-02-04 11:18                       ` Russell King - ARM Linux
2011-02-04 11:51                         ` Jassi Brar
2011-02-04 12:05                           ` Russell King - ARM Linux
2011-02-01 14:40       ` Jeremy Kerr
2011-02-04 12:45 ` Richard Zhao
2011-02-04 13:20   ` Russell King - ARM Linux
2011-02-07  6:07 ` [RFC,PATCH 2/3] clk: Generic support for fixed-rate clocks Jeremy Kerr
2011-02-07  6:07 ` [RFC,PATCH 0/3] Common struct clk implementation, v11 Jeremy Kerr
2011-02-07  6:07 ` [RFC,PATCH 1/3] Add a common struct clk Jeremy Kerr
2011-02-07  7:05   ` Uwe Kleine-König
2011-02-07  8:08   ` Uwe Kleine-König
     [not found]   ` <AANLkTim1S9zpebn3yj1fBZTtOkqj2FLwhYWBZ2HXJajR@mail.gmail.com>
2011-02-07  8:22     ` Jeremy Kerr
2011-02-07 19:59   ` Colin Cross
2011-02-08  1:40     ` Jeremy Kerr
2011-02-07 20:20   ` Ryan Mallon
2011-02-08  2:54     ` Jeremy Kerr
2011-02-08  3:30       ` Ryan Mallon
2011-02-08  7:28         ` Jeremy Kerr
2011-02-07  6:07 ` [RFC, PATCH 3/3] clk: add warnings for incorrect enable/prepare semantics Jeremy Kerr
2011-02-07  6:29   ` Jassi Brar
2011-02-07  7:00     ` Jeremy Kerr
2011-02-07  8:05   ` Uwe Kleine-König
2011-02-07  8:08     ` Jeremy Kerr
2011-02-07 14:24       ` Nicolas Pitre
2011-02-10  4:26         ` Saravana Kannan
2011-02-09  6:41 ` [RFC,PATCH 0/3] Common struct clk implementation, v12 Jeremy Kerr
2011-02-09  6:41   ` [RFC,PATCH 2/3] clk: Generic support for fixed-rate clocks Jeremy Kerr
2011-02-09  6:58     ` Fabio Giovagnini
2011-02-10 23:23     ` Ryan Mallon
2011-02-15  1:41       ` Jeremy Kerr
2011-02-15  4:51         ` Saravana Kannan
2011-02-15  6:18           ` Jeremy Kerr
2011-02-15  6:31             ` Saravana Kannan
2011-02-09  6:41   ` [RFC,PATCH 1/3] Add a common struct clk Jeremy Kerr
2011-02-09  9:00     ` Uwe Kleine-König
2011-02-09 20:21     ` Ryan Mallon
2011-02-09 20:39       ` Uwe Kleine-König
2011-02-09 20:42         ` Ryan Mallon
2011-02-10 10:03       ` Richard Zhao
2011-02-10 10:10         ` Ryan Mallon
2011-02-10 12:45           ` Richard Zhao
2011-02-10 10:46         ` Uwe Kleine-König
2011-02-10 13:08           ` Richard Zhao
2011-02-10 13:13             ` Russell King - ARM Linux
2011-02-15  1:36       ` Jeremy Kerr
2011-02-15  1:43         ` Ryan Mallon
2011-02-10  5:16     ` Saravana Kannan
2011-02-15  2:41       ` Jeremy Kerr
2011-02-15  5:33         ` Saravana Kannan
2011-02-15  7:26           ` Jeremy Kerr
2011-02-15  8:33             ` Saravana Kannan
2011-02-15  8:37             ` Russell King - ARM Linux
2011-02-15  9:33               ` Jeremy Kerr
2011-02-15 14:13                 ` Richard Zhao
2011-02-20 13:07                 ` Russell King - ARM Linux
2011-02-16  4:53           ` Saravana Kannan
2011-02-20 13:13           ` Russell King - ARM Linux
2011-02-09  6:41   ` [RFC, PATCH 3/3] clk: add warnings for incorrect enable/prepare semantics Jeremy Kerr
2011-02-10  9:37     ` Richard Zhao
2011-02-15  2:00       ` Jeremy Kerr
2011-02-21  2:50 ` [PATCH 0/2] Common struct clk implementation, v13 Jeremy Kerr
2011-02-21  2:50   ` [PATCH 1/2] Add a common struct clk Jeremy Kerr
2011-02-22 20:17     ` Uwe Kleine-König
2011-02-23  2:49       ` Jeremy Kerr
2011-02-21  2:50   ` [PATCH 2/2] clk: Generic support for fixed-rate clocks Jeremy Kerr
2011-02-21 19:51     ` Ryan Mallon
2011-02-21 23:29       ` Jeremy Kerr
2011-02-22 23:33   ` [PATCH] wip: convert imx27 to common struct clk Uwe Kleine-König
2011-02-23  4:17     ` Saravana Kannan
2011-02-23  8:15       ` Uwe Kleine-König
2011-03-03  6:40 ` [PATCH 0/2] Common struct clk implementation, v14 Jeremy Kerr
2011-03-03  6:40   ` [PATCH 1/2] Add a common struct clk Jeremy Kerr
2011-04-14 12:49     ` Tony Lindgren
2011-03-03  6:40   ` [PATCH 2/2] clk: Generic support for fixed-rate clocks Jeremy Kerr
2011-03-14 10:16   ` [PATCH 0/2] Common struct clk implementation, v14 Uwe Kleine-König
2011-03-15  4:31   ` Jeremy Kerr
2011-03-21  2:33     ` Jeremy Kerr
2011-04-14  4:20   ` Jeremy Kerr
2011-04-14 10:00     ` Russell King - ARM Linux
2011-04-14 10:23       ` Jeremy Kerr
2011-04-14 10:26         ` Russell King - ARM Linux
2011-04-14 10:25       ` Benjamin Herrenschmidt
2011-04-14 10:32         ` Russell King - ARM Linux
2011-04-14 11:59           ` Nicolas Pitre
2011-04-14 12:09             ` Russell King - ARM Linux
2011-04-14 13:39               ` Nicolas Pitre
2011-04-14 14:00                 ` Mark Brown
2011-04-14 15:38                 ` Russell King - ARM Linux
2011-04-14 16:06                   ` Nicolas Pitre
2011-04-14 17:20                   ` Uwe Kleine-König
2011-04-18 10:54                   ` Paul Mundt
2011-04-20 14:28                     ` Uwe Kleine-König
2011-04-20 16:41                       ` Thomas Gleixner
2011-04-14 19:29               ` Saravana Kannan
2011-04-14 16:08           ` Uwe Kleine-König

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=4D4873D5.70203@codeaurora.org \
    --to=skannan@codeaurora.org \
    --cc=Lorenzo.Pieralisi@arm.com \
    --cc=ben-linux@fluff.org \
    --cc=benh@kernel.crashing.org \
    --cc=dmitriyz@google.com \
    --cc=jassisinghbrar@gmail.com \
    --cc=jeremy.kerr@canonical.com \
    --cc=lethal@linux-sh.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=nicolas.pitre@linaro.org \
    --cc=s.hauer@pengutronix.de \
    --cc=u.kleine-koenig@pengutronix.de \
    --cc=vincent.guittot@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).