diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-05-28 07:56:31 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-06-17 13:05:10 -0400 |
commit | 68b3aa7c9805aee9005a8ca53c5e99177961fbb9 (patch) | |
tree | 3f28891df0b3a1ecdfe6a98547d8f3c43b74e905 /drivers/scsi/fd_mcs.c | |
parent | 94d0e7b805961c44e4dc486ffc21075084bb7175 (diff) |
[SCSI] allow sleeping in ->eh_bus_reset_handler()
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
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. */ |