Hi all, This may be really silly questions which I tried my level best to analyse and find answers in grps. I understand the working of spinlock irqsave as follows, please correct me where ever required. When you hold a spinlock with spin_lock_irqsave(), it will first store the current interrupt status, disable all the interrupts on the CPU which it is running on then it tries to acquire the lock. When releasing, it will release the spinlock, restore the flags using stored 'flags' and then reenable the interrupts. Lets say, I am using spin_lock_irqsave() between ISR and a writer context. Suppose 2 writers are contending for spinlock. and if the code is as follows: write() { spin_lock_irqsave() /*critical lock */ x++; spin_unlock_irqsave() /*critical unlock */ } If the second writen tries to acquire the lock, when the first writer is already holding it, how are flags managed. Will they not get overwitten by the second write. when happens when restoring? I am looking for clarification w.r.t contention between writers rather than with ISR. I know the 'flags' variable is the one thing that sets the difference between spin_lock_irqsave() & spin_lock_irq(). On an SMP, if the writer has disabled interrupts by acquiring respective spinlock and followed by it there occurs an ISR that is beng handled bo another CPU, then what? Are we not deadlocking? Regards, Bhanu J -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ