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/ |