diff options
-rw-r--r-- | drivers/scsi/aha152x.c | 7 | ||||
-rw-r--r-- | drivers/scsi/eata.c | 11 | ||||
-rw-r--r-- | drivers/scsi/u14-34f.c | 9 |
3 files changed, 9 insertions, 18 deletions
diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c index 6ccdc96cc480..a09b2d3fdf5a 100644 --- a/drivers/scsi/aha152x.c +++ b/drivers/scsi/aha152x.c | |||
@@ -1432,15 +1432,10 @@ static void run(struct work_struct *work) | |||
1432 | */ | 1432 | */ |
1433 | static irqreturn_t intr(int irqno, void *dev_id) | 1433 | static irqreturn_t intr(int irqno, void *dev_id) |
1434 | { | 1434 | { |
1435 | struct Scsi_Host *shpnt = (struct Scsi_Host *)dev_id; | 1435 | struct Scsi_Host *shpnt = dev_id; |
1436 | unsigned long flags; | 1436 | unsigned long flags; |
1437 | unsigned char rev, dmacntrl0; | 1437 | unsigned char rev, dmacntrl0; |
1438 | 1438 | ||
1439 | if (!shpnt) { | ||
1440 | printk(KERN_ERR "aha152x: catched interrupt %d for unknown controller.\n", irqno); | ||
1441 | return IRQ_NONE; | ||
1442 | } | ||
1443 | |||
1444 | /* | 1439 | /* |
1445 | * Read a couple of registers that are known to not be all 1's. If | 1440 | * Read a couple of registers that are known to not be all 1's. If |
1446 | * we read all 1's (-1), that means that either: | 1441 | * we read all 1's (-1), that means that either: |
diff --git a/drivers/scsi/eata.c b/drivers/scsi/eata.c index 8be3d76656fa..a73a6bbb1b2b 100644 --- a/drivers/scsi/eata.c +++ b/drivers/scsi/eata.c | |||
@@ -2286,17 +2286,14 @@ static void flush_dev(struct scsi_device *dev, unsigned long cursec, | |||
2286 | } | 2286 | } |
2287 | } | 2287 | } |
2288 | 2288 | ||
2289 | static irqreturn_t ihdlr(int irq, struct Scsi_Host *shost) | 2289 | static irqreturn_t ihdlr(struct Scsi_Host *shost) |
2290 | { | 2290 | { |
2291 | struct scsi_cmnd *SCpnt; | 2291 | struct scsi_cmnd *SCpnt; |
2292 | unsigned int i, k, c, status, tstatus, reg; | 2292 | unsigned int i, k, c, status, tstatus, reg; |
2293 | struct mssp *spp; | 2293 | struct mssp *spp; |
2294 | struct mscp *cpp; | 2294 | struct mscp *cpp; |
2295 | struct hostdata *ha = (struct hostdata *)shost->hostdata; | 2295 | struct hostdata *ha = (struct hostdata *)shost->hostdata; |
2296 | 2296 | int irq = shost->irq; | |
2297 | if (shost->irq != irq) | ||
2298 | panic("%s: ihdlr, irq %d, shost->irq %d.\n", ha->board_name, irq, | ||
2299 | shost->irq); | ||
2300 | 2297 | ||
2301 | /* Check if this board need to be serviced */ | 2298 | /* Check if this board need to be serviced */ |
2302 | if (!(inb(shost->io_port + REG_AUX_STATUS) & IRQ_ASSERTED)) | 2299 | if (!(inb(shost->io_port + REG_AUX_STATUS) & IRQ_ASSERTED)) |
@@ -2535,7 +2532,7 @@ static irqreturn_t ihdlr(int irq, struct Scsi_Host *shost) | |||
2535 | return IRQ_NONE; | 2532 | return IRQ_NONE; |
2536 | } | 2533 | } |
2537 | 2534 | ||
2538 | static irqreturn_t do_interrupt_handler(int irq, void *shap) | 2535 | static irqreturn_t do_interrupt_handler(int dummy, void *shap) |
2539 | { | 2536 | { |
2540 | struct Scsi_Host *shost; | 2537 | struct Scsi_Host *shost; |
2541 | unsigned int j; | 2538 | unsigned int j; |
@@ -2548,7 +2545,7 @@ static irqreturn_t do_interrupt_handler(int irq, void *shap) | |||
2548 | shost = sh[j]; | 2545 | shost = sh[j]; |
2549 | 2546 | ||
2550 | spin_lock_irqsave(shost->host_lock, spin_flags); | 2547 | spin_lock_irqsave(shost->host_lock, spin_flags); |
2551 | ret = ihdlr(irq, shost); | 2548 | ret = ihdlr(shost); |
2552 | spin_unlock_irqrestore(shost->host_lock, spin_flags); | 2549 | spin_unlock_irqrestore(shost->host_lock, spin_flags); |
2553 | return ret; | 2550 | return ret; |
2554 | } | 2551 | } |
diff --git a/drivers/scsi/u14-34f.c b/drivers/scsi/u14-34f.c index 58d7eee4fe81..640333b1e75c 100644 --- a/drivers/scsi/u14-34f.c +++ b/drivers/scsi/u14-34f.c | |||
@@ -1715,13 +1715,12 @@ static void flush_dev(struct scsi_device *dev, unsigned long cursec, unsigned in | |||
1715 | 1715 | ||
1716 | } | 1716 | } |
1717 | 1717 | ||
1718 | static irqreturn_t ihdlr(int irq, unsigned int j) { | 1718 | static irqreturn_t ihdlr(unsigned int j) |
1719 | { | ||
1719 | struct scsi_cmnd *SCpnt; | 1720 | struct scsi_cmnd *SCpnt; |
1720 | unsigned int i, k, c, status, tstatus, reg, ret; | 1721 | unsigned int i, k, c, status, tstatus, reg, ret; |
1721 | struct mscp *spp, *cpp; | 1722 | struct mscp *spp, *cpp; |
1722 | 1723 | int irq = sh[j]->irq; | |
1723 | if (sh[j]->irq != irq) | ||
1724 | panic("%s: ihdlr, irq %d, sh[j]->irq %d.\n", BN(j), irq, sh[j]->irq); | ||
1725 | 1724 | ||
1726 | /* Check if this board need to be serviced */ | 1725 | /* Check if this board need to be serviced */ |
1727 | if (!((reg = inb(sh[j]->io_port + REG_SYS_INTR)) & IRQ_ASSERTED)) goto none; | 1726 | if (!((reg = inb(sh[j]->io_port + REG_SYS_INTR)) & IRQ_ASSERTED)) goto none; |
@@ -1935,7 +1934,7 @@ static irqreturn_t do_interrupt_handler(int irq, void *shap) { | |||
1935 | if ((j = (unsigned int)((char *)shap - sha)) >= num_boards) return IRQ_NONE; | 1934 | if ((j = (unsigned int)((char *)shap - sha)) >= num_boards) return IRQ_NONE; |
1936 | 1935 | ||
1937 | spin_lock_irqsave(sh[j]->host_lock, spin_flags); | 1936 | spin_lock_irqsave(sh[j]->host_lock, spin_flags); |
1938 | ret = ihdlr(irq, j); | 1937 | ret = ihdlr(j); |
1939 | spin_unlock_irqrestore(sh[j]->host_lock, spin_flags); | 1938 | spin_unlock_irqrestore(sh[j]->host_lock, spin_flags); |
1940 | return ret; | 1939 | return ret; |
1941 | } | 1940 | } |