In its current implementation, the hwspinlock framework relies on jiffies to handle the timeout of the hwspin_lock_timeout_xxx() API. In an atomic context (or more precisely when irq are disabled) jiffies does not increase, which prevents the timeout to reach its target value (infinite loop). Note that there is already an hwspinlock user that runs in atomic context (drivers/irqchip/irq-stm32-exti.c) and that has to handle by itself the timeout. The first patch of the series completes the Documentation (the 'raw' API is not documented), and the second patch provides with the 'in_atomic' API. Fabien Dessenne (2): hwspinlock: document the hwspinlock 'raw' API hwspinlock: add the 'in_atomic' API Documentation/hwspinlock.txt | 81 ++++++++++++++++++++++++++++++++++++ drivers/hwspinlock/hwspinlock_core.c | 43 +++++++++++++------ include/linux/hwspinlock.h | 61 +++++++++++++++++++++++++-- 3 files changed, 169 insertions(+), 16 deletions(-) -- 2.7.4