<br><br><div class="gmail_quote">On Thu, Nov 10, 2011 at 3:10 AM, Dave Hylands <span dir="ltr">&lt;<a href="mailto:dhylands@gmail.com">dhylands@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi Kai,<br>
<div class="im"><br>
On Wed, Nov 9, 2011 at 1:07 PM, Kai Meyer &lt;<a href="mailto:kai@gnukai.com">kai@gnukai.com</a>&gt; wrote:<br>
&gt; When I readup on spinlocks, it seems like I need to choose between<br>
&gt; disabling interrupts and not. If a spinlock_t is never used during an<br>
&gt; interrupt, am I safe to leave interrupts enabled while I hold the lock?<br>
&gt; (Same question for read/write locks if it is different.)<br>
<br>
</div>So the intention behind using a spinlock is to provide mutual exclusion.<br>
<br>
A spinlock by itself only really provides mutual exclusion between 2<br>
cores, and not within the same core. To provide the mutual exclusion<br>
within the same core, you need to disable interrupts.<br>
<br>
Normally, you would disable interrupts and acquire the spinlock to<br>
guarantee that mutual exclusion, and the only reason you would<br>
normally use the spinlock without disabling interrupts is when you<br>
know that interrupts are already disabled.<br>
<br>
The danger of acquiring a spinlock with interrupts enabled is that if<br>
another interrupt fired (or the same interrupt fired again) and it<br>
tried to acquire the same spinlock, then you could have deadlock.<br>
<br>
If no interrupts touch the spinlock, then you&#39;re probably using the<br>
wrong mutual exclusion mechanism. spinlocks are really intended to<br>
provide mutual exclsion between interrupt context and non-interrupt<br>
context.<br>
<br>
Also remember, that on a non-SMP (aka UP) build, spinlocks become<br>
no-ops (except when certain debug checking code is enabled).<br>
<font color="#888888"><br>
--<br>
Dave Hylands<br>
Shuswap, BC, Canada<br>
<a href="http://www.davehylands.com" target="_blank">http://www.davehylands.com</a><br>
</font><div><div></div><div class="h5"><br>
_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</div></div></blockquote></div><br>Nice explanation Dave.<br><br>Regards,<br>Rohan Puri<br>