Messages in this thread | | | Date | Tue, 11 Jan 2011 11:56:09 +0100 | From | Uwe Kleine-König <> | Subject | Re: Locking in the clk API |
| |
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: > > 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/ | -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |