summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/ic/iha.c8
-rw-r--r--sys/dev/ic/sili.c4
-rw-r--r--sys/dev/pci/ahci.c5
3 files changed, 9 insertions, 8 deletions
diff --git a/sys/dev/ic/iha.c b/sys/dev/ic/iha.c
index dfa2b2a7a63..b01a1a39601 100644
--- a/sys/dev/ic/iha.c
+++ b/sys/dev/ic/iha.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: iha.c,v 1.41 2012/01/11 16:22:33 dhill Exp $ */
+/* $OpenBSD: iha.c,v 1.42 2012/02/04 21:44:54 krw Exp $ */
/*-------------------------------------------------------------------------
*
* Device driver for the INI-9XXXU/UW or INIC-940/950 PCI SCSI Controller.
@@ -322,8 +322,6 @@ iha_scsi_cmd(struct scsi_xfer *xs)
* But, timeout_add() ONLY if we are not polling.
*/
timeout_set(&xs->stimeout, iha_timeout, pScb);
- if ((pScb->SCB_Flags & SCSI_POLL) == 0)
- timeout_add_msec(&xs->stimeout, xs->timeout);
iha_exec_scb(sc, pScb);
}
@@ -2444,12 +2442,16 @@ iha_timeout(void *arg)
void
iha_exec_scb(struct iha_softc *sc, struct iha_scb *pScb)
{
+ struct scsi_xfer *xs = pScb->SCB_Xs;
bus_space_handle_t ioh;
bus_space_tag_t iot;
int s;
s = splbio();
+ if ((pScb->SCB_Flags & SCSI_POLL) == 0)
+ timeout_add_msec(&xs->stimeout, xs->timeout);
+
if (((pScb->SCB_Flags & SCSI_RESET) != 0)
|| (pScb->SCB_CDB[0] == REQUEST_SENSE))
iha_push_pend_scb(sc, pScb); /* Insert SCB at head of Pend */
diff --git a/sys/dev/ic/sili.c b/sys/dev/ic/sili.c
index 9fe184e0edf..065699d339f 100644
--- a/sys/dev/ic/sili.c
+++ b/sys/dev/ic/sili.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sili.c,v 1.50 2012/02/04 17:52:22 krw Exp $ */
+/* $OpenBSD: sili.c,v 1.51 2012/02/04 21:44:54 krw Exp $ */
/*
* Copyright (c) 2007 David Gwynne <dlg@openbsd.org>
@@ -1460,8 +1460,8 @@ sili_ata_cmd(struct ata_xfer *xa)
if (xa->flags & ATA_F_POLL)
sili_poll(ccb, xa->timeout, sili_ata_cmd_timeout);
else {
- timeout_add_msec(&xa->stimeout, xa->timeout);
s = splbio();
+ timeout_add_msec(&xa->stimeout, xa->timeout);
sili_start(sp, ccb);
splx(s);
}
diff --git a/sys/dev/pci/ahci.c b/sys/dev/pci/ahci.c
index 6c07f248a6c..774e48aa99b 100644
--- a/sys/dev/pci/ahci.c
+++ b/sys/dev/pci/ahci.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ahci.c,v 1.185 2011/11/14 00:25:17 mlarkin Exp $ */
+/* $OpenBSD: ahci.c,v 1.186 2012/02/04 21:44:54 krw Exp $ */
/*
* Copyright (c) 2006 David Gwynne <dlg@openbsd.org>
@@ -3440,9 +3440,8 @@ ahci_ata_cmd(struct ata_xfer *xa)
if (xa->flags & ATA_F_POLL)
ahci_poll(ccb, xa->timeout, ahci_ata_cmd_timeout);
else {
- timeout_add_msec(&xa->stimeout, xa->timeout);
-
s = splbio();
+ timeout_add_msec(&xa->stimeout, xa->timeout);
ahci_start(ccb);
splx(s);
}