--- spinlocks.txt.0	Thu Sep  9 13:40:46 1999
+++ spinlocks.txt	Thu Sep  9 13:57:01 1999
@@ -63,9 +63,9 @@
 
 and another sequence that does
 
-	spin_lock_irqsave(flags);
+	spin_lock_irqsave(&xxx_lock, flags);
 	.. critical section ..
-	spin_unlock_irqrestore(flags);
+	spin_unlock_irqrestore(&xxx_lock, flags);
 
 then they are NOT mutually exclusive, and the critical regions can happen
 at the same time on two different CPU's. That's fine per se, but the
@@ -168,6 +168,25 @@
 on other CPU's, because an interrupt on another CPU doesn't interrupt the
 CPU that holds the lock, so the lock-holder can continue and eventually
 releases the lock). 
+
+If you have a case where both interrupt and non-interrupt (e.g. ioctl()) code
+access the same data structures then you should use spin_lock_irqsave() in the
+non-interrupt code and spin_lock() in the interrupt handler as in:
+
+my_ioctl()
+{
+	spin_lock_irqsave(&lock, flags);
+	...
+	spin_unlock_irqrestore(&lock, flags);
+}
+
+my_irq_handler()
+{
+	spin_lock(&lock);
+	...
+	spin_unlock(&lock);
+}
+
 
 Note that you can be clever with read-write locks and interrupts. For
 example, if you know that the interrupt only ever gets a read-lock, then