diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1998-05-07 02:55:41 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1998-05-07 02:55:41 +0000 |
commit | dcec8a13bf565e47942a1751a9cec21bec5648fe (patch) | |
tree | 548b69625b18cc2e88c3e68d0923be546c9ebb03 /drivers/scsi/ibmmca.c | |
parent | 2e0f55e79c49509b7ff70ff1a10e1e9e90a3dfd4 (diff) |
o Merge with Linux 2.1.99.
o Fix ancient bug in the ELF loader making ldd crash.
o Fix ancient bug in the keyboard code for SGI, SNI and Jazz.
Diffstat (limited to 'drivers/scsi/ibmmca.c')
-rw-r--r-- | drivers/scsi/ibmmca.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/scsi/ibmmca.c b/drivers/scsi/ibmmca.c index 60be3c619..034b219cc 100644 --- a/drivers/scsi/ibmmca.c +++ b/drivers/scsi/ibmmca.c @@ -298,6 +298,7 @@ #include <linux/stat.h> #include <linux/mca.h> #include <asm/system.h> +#include <asm/spinlock.h> #include <asm/io.h> #include "sd.h" #include "scsi.h" @@ -834,6 +835,7 @@ static struct Scsi_Host *hosts[IM_MAX_HOSTS+1] = { NULL }; /*local functions in forward declaration */ static void interrupt_handler (int irq, void *dev_id, struct pt_regs *regs); +static void do_interrupt_handler (int irq, void *dev_id, struct pt_regs *regs); static void issue_cmd (struct Scsi_Host *shpnt, unsigned long cmd_reg, unsigned char attn_reg); static void internal_done (Scsi_Cmnd * cmd); @@ -856,6 +858,17 @@ static int ldn_access_total_read_write(struct Scsi_Host *shpnt); /*--------------------------------------------------------------------*/ + +static void +do_interrupt_handler (int irq, void *dev_id, struct pt_regs *regs) +{ + unsigned long flags; + + spin_lock_irqsave(&io_request_lock, flags); + interrupt_handler(irq, dev_id, regs); + spin_unlock_irqrestore(&io_request_lock, flags); +} + static void interrupt_handler (int irq, void *dev_id, struct pt_regs *regs) { @@ -1526,7 +1539,7 @@ ibmmca_detect (Scsi_Host_Template * template) return 0; /* get interrupt request level */ - if (request_irq (IM_IRQ, interrupt_handler, SA_SHIRQ, "ibmmca", hosts)) + if (request_irq (IM_IRQ, do_interrupt_handler, SA_SHIRQ, "ibmmca", hosts)) { printk("IBM MCA SCSI: Unable to get IRQ %d.\n", IM_IRQ); return 0; |