summaryrefslogtreecommitdiffstats
path: root/sys/dev/ahci
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2009-10-23 13:07:22 +0000
committermav <mav@FreeBSD.org>2009-10-23 13:07:22 +0000
commita9d32e2a18a255072c843d33eba2dc18662c60e0 (patch)
tree2e5f0c8220ca348565a9276e0fd1c00438113fe9 /sys/dev/ahci
parent737d93433cefb60c8dd0f95d94f6def141704008 (diff)
downloadFreeBSD-src-a9d32e2a18a255072c843d33eba2dc18662c60e0.zip
FreeBSD-src-a9d32e2a18a255072c843d33eba2dc18662c60e0.tar.gz
Revert interrupt reason check order back.
ATAPI errors may set IF bit together with TFE.
Diffstat (limited to 'sys/dev/ahci')
-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 485ac3d..0a2472e 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);
OpenPOWER on IntegriCloud