Thread (80 messages) 80 messages, 20 authors, 2011-01-28

Re: Locking in the clk API

From: <hidden>
Date: 2011-01-11 10:56:19
Also in: linux-arm-kernel, lkml

Hello Russell,

On Tue, Jan 11, 2011 at 10:47:09AM +0000, Russell King - ARM Linux wrote:
On Tue, Jan 11, 2011 at 11:39:29AM +0100, Uwe Kleine-König wrote:
quoted
A quick look into Digi's BSP (digiEL-5.0) shows they implemented
something I suggested earlier here:

[...]


I think the idea is nice.  At least it allows with a single lock to
implement both, sleeping and atomic clks without the need to mark the
atomicity in a global flag.
It doesn't.  clk_enable() here can still end up trying to sleep when
it's called from IRQ context - the code doesn't solve that.  All it
means is that the intermediate code doesn't care whether clk->endisable
ends up sleeping or not.
Obviousley you're right and your last sentence is all I intended to
claim.
What it does do is return -EBUSY if there are two concurrent attempts
to enable the same clock.  How many drivers today deal sanely with
such an error from clk_enable(), and how many would just fail their
probe() call on such an occurance?
Yes, that's the ugly part.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help