Author: mav
Date: Tue Nov 17 20:19:20 2009
New Revision: 199427
URL: http://svn.freebsd.org/changeset/base/199427

Log:
  MFC r198390:
  Revert interrupt reason check order back.
  ATAPI errors may set IF bit together with TFE.

Modified:
  stable/8/sys/dev/ahci/ahci.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/dev/ahci/ahci.c
==============================================================================
--- stable/8/sys/dev/ahci/ahci.c        Tue Nov 17 20:17:48 2009        
(r199426)
+++ stable/8/sys/dev/ahci/ahci.c        Tue Nov 17 20:19:20 2009        
(r199427)
@@ -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);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to