diff options
Diffstat (limited to 'drivers/scsi/fd_mcs.c')
-rw-r--r-- | drivers/scsi/fd_mcs.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/scsi/fd_mcs.c b/drivers/scsi/fd_mcs.c index 4a358aec2e59..fa652f8aa643 100644 --- a/drivers/scsi/fd_mcs.c +++ b/drivers/scsi/fd_mcs.c | |||
@@ -1243,6 +1243,7 @@ static int fd_mcs_abort(Scsi_Cmnd * SCpnt) | |||
1243 | 1243 | ||
1244 | static int fd_mcs_bus_reset(Scsi_Cmnd * SCpnt) { | 1244 | static int fd_mcs_bus_reset(Scsi_Cmnd * SCpnt) { |
1245 | struct Scsi_Host *shpnt = SCpnt->device->host; | 1245 | struct Scsi_Host *shpnt = SCpnt->device->host; |
1246 | unsigned long flags; | ||
1246 | 1247 | ||
1247 | #if DEBUG_RESET | 1248 | #if DEBUG_RESET |
1248 | static int called_once = 0; | 1249 | static int called_once = 0; |
@@ -1259,6 +1260,8 @@ static int fd_mcs_bus_reset(Scsi_Cmnd * SCpnt) { | |||
1259 | called_once = 1; | 1260 | called_once = 1; |
1260 | #endif | 1261 | #endif |
1261 | 1262 | ||
1263 | spin_lock_irqsave(shpnt->host_lock, flags); | ||
1264 | |||
1262 | outb(1, SCSI_Cntl_port); | 1265 | outb(1, SCSI_Cntl_port); |
1263 | do_pause(2); | 1266 | do_pause(2); |
1264 | outb(0, SCSI_Cntl_port); | 1267 | outb(0, SCSI_Cntl_port); |
@@ -1266,6 +1269,8 @@ static int fd_mcs_bus_reset(Scsi_Cmnd * SCpnt) { | |||
1266 | outb(0, SCSI_Mode_Cntl_port); | 1269 | outb(0, SCSI_Mode_Cntl_port); |
1267 | outb(PARITY_MASK, TMC_Cntl_port); | 1270 | outb(PARITY_MASK, TMC_Cntl_port); |
1268 | 1271 | ||
1272 | spin_unlock_irqrestore(shpnt->host_lock, flags); | ||
1273 | |||
1269 | /* Unless this is the very first call (i.e., SCPnt == NULL), everything | 1274 | /* Unless this is the very first call (i.e., SCPnt == NULL), everything |
1270 | is probably hosed at this point. We will, however, try to keep | 1275 | is probably hosed at this point. We will, however, try to keep |
1271 | things going by informing the high-level code that we need help. */ | 1276 | things going by informing the high-level code that we need help. */ |