summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2007-11-05 23:43:27 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2007-11-05 23:43:27 +0000
commita59d8208a5a751525ba6934de013ba5f4bce58ca (patch)
tree3b3ea323c576f63c348f91783c40f72df8e27ffe
parentd7d4ff5dabbf7fa5d6c8abd9ebcb35841b853ae2 (diff)
More scsi_done() at SPLBIO.
-rw-r--r--sys/dev/ic/mfi.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/ic/mfi.c b/sys/dev/ic/mfi.c
index 53559f53ab0..ffbd7c46773 100644
--- a/sys/dev/ic/mfi.c
+++ b/sys/dev/ic/mfi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mfi.c,v 1.74 2007/09/27 08:45:19 chl Exp $ */
+/* $OpenBSD: mfi.c,v 1.75 2007/11/05 23:43:26 krw Exp $ */
/*
* Copyright (c) 2006 Marco Peereboom <marco@peereboom.us>
*
@@ -938,6 +938,7 @@ mfi_scsi_cmd(struct scsi_xfer *xs)
uint32_t blockno, blockcnt;
uint8_t target = link->target;
uint8_t mbox[MFI_MBOX_SIZE];
+ int s;
DNPRINTF(MFI_D_CMD, "%s: mfi_scsi_cmd opcode: %#x\n",
DEVNAME(sc), xs->cmd->opcode);
@@ -1021,7 +1022,9 @@ mfi_scsi_cmd(struct scsi_xfer *xs)
xs->sense.add_sense_code = 0x20; /* invalid opcode */
xs->error = XS_SENSE;
xs->flags |= ITSDONE;
+ s = splbio();
scsi_done(xs);
+ splx(s);
return (COMPLETE);
}
DNPRINTF(MFI_D_DMA, "%s: mfi_scsi_cmd poll complete %d\n",
@@ -1041,7 +1044,9 @@ mfi_scsi_cmd(struct scsi_xfer *xs)
stuffup:
xs->error = XS_DRIVER_STUFFUP;
xs->flags |= ITSDONE;
+ s = splbio();
scsi_done(xs);
+ splx(s);
return (COMPLETE);
}