aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ahci/ahci.c
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2009-10-23 13:07:22 +0000
committerAlexander Motin <mav@FreeBSD.org>2009-10-23 13:07:22 +0000
commitc269e21049464b2cb2058f10736ec6e5c0be1a7e (patch)
tree2e5f0c8220ca348565a9276e0fd1c00438113fe9 /sys/dev/ahci/ahci.c
parent65d0fb03ad2580c999c3f590fa7e77f3ed8e1def (diff)
downloadsrc-c269e21049464b2cb2058f10736ec6e5c0be1a7e.tar.gz
src-c269e21049464b2cb2058f10736ec6e5c0be1a7e.zip
Revert interrupt reason check order back.
ATAPI errors may set IF bit together with TFE.
Notes
Notes: svn path=/head/; revision=198390
Diffstat (limited to 'sys/dev/ahci/ahci.c')
-rw-r--r--sys/dev/ahci/ahci.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/dev/ahci/ahci.c b/sys/dev/ahci/ahci.c
index 485ac3d5ce4b..0a2472e77977 100644
--- a/sys/dev/ahci/ahci.c
+++ b/sys/dev/ahci/ahci.c
@@ -1001,12 +1001,7 @@ ahci_ch_intr(void *data)
/* XXX: reqests in loading state. */
if (((err >> i) & 1) == 0)
continue;
- if (istatus & AHCI_P_IX_IF) {
- if (ch->numtslots == 0 && i != ccs)
- et = AHCI_ERR_INNOCENT;
- else
- et = AHCI_ERR_SATA;
- } else if (istatus & AHCI_P_IX_TFE) {
+ if (istatus & AHCI_P_IX_TFE) {
/* Task File Error */
if (ch->numtslots == 0) {
/* Untagged operation. */
@@ -1019,6 +1014,11 @@ ahci_ch_intr(void *data)
et = AHCI_ERR_NCQ;
ncq_err = 1;
}
+ } else if (istatus & AHCI_P_IX_IF) {
+ if (ch->numtslots == 0 && i != ccs)
+ et = AHCI_ERR_INNOCENT;
+ else
+ et = AHCI_ERR_SATA;
} else
et = AHCI_ERR_INVALID;
ahci_end_transaction(&ch->slot[i], et);