AHCI - Reduce console spew
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 26 Jun 2009 03:55:07 +0000 (20:55 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 26 Jun 2009 03:55:07 +0000 (20:55 -0700)
sys/dev/disk/ahci/TODO
sys/dev/disk/ahci/ahci.c

index c799a86..aeac37c 100644 (file)
@@ -1,4 +1,9 @@
 
+10 second timeout in CAM
+
+
+-----
+
 DELAY's might tsleep, so interrupts might run.  fix poll loop to detect
 completion via other interrupts.
 
@@ -18,6 +23,16 @@ NOTE RACE:  A transient IFS interrupt (fatal phy/protocol error) can occur
 when soft-resetting through a port multiplier, between the first and second
 FISes.  We need to be able to lock access to the port.
 
+------ serial number -----------
+
+OpenBSD /etc/devtab
+
+name   type    serialnumber
+       naa
+       wwn
+       serno
+       etc
+
 ------ Misc probe info --------
 
 <AHCI-PCI-SATA> port
@@ -27,6 +42,8 @@ FISes.  We need to be able to lock access to the port.
 ahci0: AHCI 1.2 capabilities 0xe3229f05
 <S64A,NCQ,SSNTF,SAL,SCLO,SPM,PMD>, 6 ports, 32 tags/port, gen 1 (1.5Gbps) and 2 (3Gbps)
 
+0xf722ff83<S64A,NCQ,SSNTF,SMPS,SALP,SAL,SCLO,SPM,PMD,SSC,PSC,CCCS> 4 ports, 32
+
 
 Chipsets supporting FBSS (FIS-Based Switching):
        SB800
index 248ce68..b213743 100644 (file)
@@ -1581,7 +1581,8 @@ ahci_unload_prdt(struct ahci_ccb *ccb)
                if (ccb->ccb_xa.flags & ATA_F_NCQ) {
                        xa->resid = 0;
                } else {
-                       if (ccb->ccb_cmd_hdr->prdbc == 0) {
+                       if (ccb->ccb_cmd_hdr->prdbc == 0 &&
+                           ccb->ccb_xa.state == ATA_S_COMPLETE) {
                                kprintf("%s: WARNING!  Unload prdbc resid "
                                        "was zero! tag=%d\n",
                                        ATANAME(ap, xa->at), ccb->ccb_slot);
@@ -2128,8 +2129,14 @@ process_error:
                ahci_port_start(ap);
                need = NEED_RESTART;
 
-               kprintf("%s: TFES slot %d ci_saved = %08x\n",
-                       PORTNAME(ap), err_slot, ci_saved);
+               /*
+                * ATAPI errors are fairly common from probing, just
+                * report disk errors or if bootverbose is on.
+                */
+               if (bootverbose || ap->ap_type != ATA_PORT_T_ATAPI) {
+                       kprintf("%s: TFES slot %d ci_saved = %08x\n",
+                               PORTNAME(ap), err_slot, ci_saved);
+               }
 
                /*
                 * If we got an error on an error CCB just complete it
@@ -2175,8 +2182,10 @@ process_error:
                                ccb_at = ccb->ccb_xa.at;
                                memcpy(&ccb->ccb_xa.rfis, ap->ap_rfis->rfis,
                                       sizeof(struct ata_fis_d2h));
-                               kprintf("%s: Copying error rfis slot %d\n",
-                                       ATANAME(ap, ccb_at), err_slot);
+                               if (bootverbose) {
+                                       kprintf("%s: Copying rfis slot %d\n",
+                                               ATANAME(ap, ccb_at), err_slot);
+                               }
                        } else {
                                kprintf("%s: Cannot copy rfis, CCB slot "
                                        "%d is not on-chip (state=%d)\n",