patch-2.1.96 linux/drivers/scsi/advansys.c

Next file: linux/drivers/scsi/aha1542.c
Previous file: linux/drivers/scsi/a3000.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.95/linux/drivers/scsi/advansys.c linux/drivers/scsi/advansys.c
@@ -668,6 +668,9 @@
 #include <linux/blk.h>
 #include <linux/stat.h>
 #endif /* version >= v1.3.0 */
+#if LINUX_VERSION_CODE >= ASC_LINUX_VERSION(2,1,95)
+#include <asm/spinlock.h>
+#endif
 #include "scsi.h"
 #include "hosts.h"
 #include "sd.h"
@@ -3841,8 +3844,11 @@
 #endif /* version >= v1.3.0 */
 #if LINUX_VERSION_CODE < ASC_LINUX_VERSION(1,3,70)
 STATIC void         advansys_interrupt(int, struct pt_regs *);
-#else /* version >= v1.3.70 */
+#elif LINUX_VERSION_CODE < ASC_LINUX_VERSION(2,1,95)
+STATIC void         advansys_interrupt(int, void *, struct pt_regs *);
+#else /* version >= 2.1.95 */
 STATIC void         advansys_interrupt(int, void *, struct pt_regs *);
+STATIC void         do_advansys_interrupt(int, void *, struct pt_regs *);
 #endif /* version >= v1.3.70 */
 #if LINUX_VERSION_CODE >= ASC_LINUX_VERSION(1,3,89)
 STATIC void         advansys_select_queue_depths(struct Scsi_Host *,
@@ -4880,10 +4886,14 @@
 #if LINUX_VERSION_CODE < ASC_LINUX_VERSION(1,3,70)
             if ((ret = request_irq(shp->irq, advansys_interrupt,
                             SA_INTERRUPT, "advansys")) != 0)
-#else /* version >= v1.3.70 */
+#elif LINUX_VERSION_CODE < ASC_LINUX_VERSION(2,1,95)
             if ((ret = request_irq(shp->irq, advansys_interrupt,
                             SA_INTERRUPT | (share_irq == TRUE ? SA_SHIRQ : 0),
                             "advansys", boardp)) != 0)
+#else /* version >= 2.1.95 */
+            if ((ret = request_irq(shp->irq, do_advansys_interrupt,
+                            SA_INTERRUPT | (share_irq == TRUE ? SA_SHIRQ : 0),
+                            "advansys", boardp)) != 0)
 #endif /* version >= v1.3.70 */
             {
                 ASC_PRINT2(
@@ -6204,6 +6214,18 @@
     ASC_DBG(1, "advansys_interrupt: end\n");
     return;
 }
+
+#if LINUX_VERSION_CODE >= ASC_LINUX_VERSION(2,1,95)
+static void
+do_advansys_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+{
+    unsigned long flags;
+
+    spin_lock_irqsave(&io_request_lock, flags);
+    advansys_interrupt(irq, dev_id, regs);
+    spin_unlock_irqrestore(&io_request_lock, flags);
+}
+#endif
 
 #if LINUX_VERSION_CODE >= ASC_LINUX_VERSION(1,3,89)
 /*

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov