From c7fc24dc4420057f103afe8fc64524ebc25c5d37 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Tue, 25 Aug 1998 09:12:35 +0000 Subject: o Merge with Linux 2.1.116. o New Newport console code. o New G364 console code. --- drivers/scsi/in2000.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'drivers/scsi/in2000.c') diff --git a/drivers/scsi/in2000.c b/drivers/scsi/in2000.c index 7e11430d4..adc7ccf2e 100644 --- a/drivers/scsi/in2000.c +++ b/drivers/scsi/in2000.c @@ -858,7 +858,6 @@ static void in2000_intr (int irqnum, void * dev_id, struct pt_regs *ptregs) struct Scsi_Host *instance; struct IN2000_hostdata *hostdata; Scsi_Cmnd *patch, *cmd; -unsigned long flags; uchar asr, sr, phs, id, lun, *ucp, msg; int i,j; unsigned long length; @@ -875,11 +874,6 @@ unsigned short f; } hostdata = (struct IN2000_hostdata *)instance->hostdata; -/* OK - it should now be safe to re-enable system interrupts */ - - save_flags(flags); - sti(); - #ifdef PROC_STATISTICS hostdata->int_cnt++; #endif @@ -1014,7 +1008,6 @@ DB(DB_FIFO,printk("{W:%02x} ",read1_io(IO_FIFO_COUNT))) } write1_io(0, IO_LED_OFF); - restore_flags(flags); return; } @@ -1030,7 +1023,6 @@ DB(DB_FIFO,printk("{W:%02x} ",read1_io(IO_FIFO_COUNT))) if (!cmd && (sr != CSR_RESEL_AM && sr != CSR_TIMEOUT && sr != CSR_SELECT)) { printk("\nNR:wd-intr-1\n"); write1_io(0, IO_LED_OFF); - restore_flags(flags); return; } @@ -1092,10 +1084,12 @@ DB(DB_TRANSFER,printk("(%p,%d)",cmd->SCp.ptr,cmd->SCp.this_residual)) /* Respond to the specific WD3393 interrupt - there are quite a few! */ switch (sr) { + unsigned long flags; case CSR_TIMEOUT: DB(DB_INTR,printk("TIMEOUT")) + save_flags(flags); cli(); if (hostdata->state == S_RUNNING_LEVEL2) hostdata->connected = NULL; @@ -1114,7 +1108,7 @@ CHECK_NULL(cmd,"csr_timeout") * are commands waiting to be executed. */ - sti(); + restore_flags(flags); in2000_execute(instance); break; @@ -1361,6 +1355,7 @@ printk("sync_xfer=%02x",hostdata->sync_xfer[cmd->target]); /* Note: this interrupt will occur only after a LEVEL2 command */ case CSR_SEL_XFER_DONE: + save_flags(flags); cli(); /* Make sure that reselection is enabled at this point - it may @@ -1388,7 +1383,7 @@ DB(DB_INTR,printk(":%d.%d",cmd->SCp.Status,lun)) * there are commands waiting to be executed. */ - sti(); + restore_flags(flags); in2000_execute(instance); } else { @@ -1447,6 +1442,7 @@ DB(DB_INTR,printk("%02x",hostdata->outgoing_msg[0])) * so we treat it as a normal command-complete-disconnect. */ + save_flags(flags); cli(); /* Make sure that reselection is enabled at this point - it may @@ -1473,12 +1469,13 @@ DB(DB_INTR,printk("UNEXP_DISC-%ld",cmd->pid)) * there are commands waiting to be executed. */ - sti(); + restore_flags(flags); in2000_execute(instance); break; case CSR_DISC: + save_flags(flags); cli(); /* Make sure that reselection is enabled at this point - it may @@ -1524,7 +1521,7 @@ DB(DB_INTR,printk(":%d",cmd->SCp.Status)) * there are commands waiting to be executed. */ - sti(); + restore_flags(flags); in2000_execute(instance); break; @@ -1633,7 +1630,6 @@ DB(DB_INTR,printk("-%ld",cmd->pid)) } write1_io(0, IO_LED_OFF); - restore_flags(flags); DB(DB_INTR,printk("} ")) -- cgit v1.2.3