Locking in the clk API

Russell King - ARM Linux linux at arm.linux.org.uk
Sat Jan 22 04:15:26 EST 2011

On Fri, Jan 21, 2011 at 05:53:43PM -0800, Saravana Kannan wrote:
> On 01/21/2011 01:32 AM, Russell King - ARM Linux wrote:
>> On Thu, Jan 20, 2011 at 08:12:45PM -0800, Saravana Kannan wrote:
>>> In my opinion, the only major reason for needing atomic clk APIs was due
>>> to device_ops->suspend being atomic. Since that's not the case anymore,
>>> I really don't see a justification for atomic clocks. Sure, I might have
>>> missed some exceptions, but in that case we should make the atomic APIs
>>> an exception (add clk_enable_atomic) and not the norm.
>> The suspend method has never been atomic.  It has always been able to
>> sleep.  You're mistaken.
> I distinctly remember trying to do sleeping stuff inside a .suspend  
> function and have it complain that it's atomic. So, I think you might be  
> mistaken.

No I'm not.  I've always had stuff which takes mutexes/semaphores in
the suspend method.

You'll get the warning if you take a spinlock and then try sleeping -
but that's your error for creating an atomic context (you can't sleep
while holding a spinlock), not the fault of the callback.

More information about the linux-arm-kernel mailing list