<div dir="ltr"><div>Hi,</div><div><br></div><div dir="ltr">> I think the main idea spinlock disables preemption is,<br></div><div lang="KO" style="overflow-wrap: break-word;"><div class="gmail-m_-5044940625878728386WordSection1"><p class="MsoNormal"><span lang="EN-US">> the other process that's spinning on the lock can acquire lock.</span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">> but in some implementations of spinlock, like qspinlock in x86 (or mcs lock),<br>> I think there's no need to disable preemption. because processes<br>> waiting for lock cannot acquire the lock before the lock holder hand<br>> over to other process.<br></span></p><p class="MsoNormal"><span lang="EN-US"><br></span></p><p class="MsoNormal">Are you talking about disabling local irq(ex. spin_lock_irqsave)?</p><p class="MsoNormal">If so, think about the situation that a process holding the lock is preempted </p><p class="MsoNormal">by interrupt. And that interrupt handler tries to grab the spinlock.  </p><p class="MsoNormal">It will lead to deadlock.</p></div></div></div>