summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Gwynne <dlg@cvs.openbsd.org>2010-05-24 04:40:15 +0000
committerDavid Gwynne <dlg@cvs.openbsd.org>2010-05-24 04:40:15 +0000
commitaf5ac829713346309d8784d737e7979488f5f348 (patch)
tree3150759b466faf14c80d6f2ef5d4eab8529544de
parent8290987282000ff434f8c0fd97c12b256d1127cd (diff)
atascsi may (will) reuse ata_xfers, meaning the xa state that
ahci_ata_cmd is called with might be the state of the xfer that ahci set previously. this stops ahci_ata_cmd from checking the state of ata_xfers its given, and instead trusts that atascsi is doing the right thing. reported and fix tested by matthew dempsky, who also did an awesome job of tracing the problem.
-rw-r--r--sys/dev/pci/ahci.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/sys/dev/pci/ahci.c b/sys/dev/pci/ahci.c
index 98630fcb7c0..4f0b095fcb3 100644
--- a/sys/dev/pci/ahci.c
+++ b/sys/dev/pci/ahci.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ahci.c,v 1.164 2010/05/19 15:27:35 oga Exp $ */
+/* $OpenBSD: ahci.c,v 1.165 2010/05/24 04:40:14 dlg Exp $ */
/*
* Copyright (c) 2006 David Gwynne <dlg@openbsd.org>
@@ -1564,8 +1564,6 @@ ahci_start(struct ahci_ccb *ccb)
struct ahci_port *ap = ccb->ccb_port;
struct ahci_softc *sc = ap->ap_sc;
- KASSERT(ccb->ccb_xa.state == ATA_S_PENDING);
-
/* Zero transferred byte count before transfer */
ccb->ccb_cmd_hdr->prdbc = 0;
@@ -2349,8 +2347,6 @@ ahci_ata_cmd(struct ata_xfer *xa)
struct ahci_cmd_hdr *cmd_slot;
int s;
- KASSERT(xa->state == ATA_S_SETUP);
-
if (ccb->ccb_port->ap_state == AP_S_FATAL_ERROR)
goto failcmd;