Author: smh
Date: Fri Jun  7 12:33:40 2013
New Revision: 251492
URL: http://svnweb.freebsd.org/changeset/base/251492

Log:
  MFC r250792:
  Added output of device QUIRKS for CAM and AHCI devices during boot.

Modified:
  stable/8/sys/cam/ata/ata_da.c
  stable/8/sys/cam/cam_xpt.c
  stable/8/sys/cam/cam_xpt_periph.h
  stable/8/sys/cam/scsi/scsi_cd.c
  stable/8/sys/cam/scsi/scsi_ch.c
  stable/8/sys/cam/scsi/scsi_da.c
  stable/8/sys/cam/scsi/scsi_sa.c
  stable/8/sys/dev/ahci/ahci.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/cam/   (props changed)
  stable/8/sys/dev/   (props changed)
  stable/8/sys/dev/ahci/   (props changed)

Modified: stable/8/sys/cam/ata/ata_da.c
==============================================================================
--- stable/8/sys/cam/ata/ata_da.c       Fri Jun  7 12:24:15 2013        
(r251491)
+++ stable/8/sys/cam/ata/ata_da.c       Fri Jun  7 12:33:40 2013        
(r251492)
@@ -94,6 +94,10 @@ typedef enum {
        ADA_Q_4K                = 0x01,
 } ada_quirks;
 
+#define ADA_Q_BIT_STRING       \
+       "\020"                  \
+       "\0014K"
+
 typedef enum {
        ADA_CCB_RAHEAD          = 0x01,
        ADA_CCB_WCACHE          = 0x02,
@@ -1191,6 +1195,7 @@ adaregister(struct cam_periph *periph, v
                dp->secsize, dp->heads,
                dp->secs_per_track, dp->cylinders);
        xpt_announce_periph(periph, announce_buf);
+       xpt_announce_quirks(periph, softc->quirks, ADA_Q_BIT_STRING);
        if (legacy_id >= 0)
                printf("%s%d: Previously was known as ad%d\n",
                       periph->periph_name, periph->unit_number, legacy_id);

Modified: stable/8/sys/cam/cam_xpt.c
==============================================================================
--- stable/8/sys/cam/cam_xpt.c  Fri Jun  7 12:24:15 2013        (r251491)
+++ stable/8/sys/cam/cam_xpt.c  Fri Jun  7 12:33:40 2013        (r251492)
@@ -1099,6 +1099,15 @@ xpt_announce_periph(struct cam_periph *p
                       periph->unit_number, announce_string);
 }
 
+void
+xpt_announce_quirks(struct cam_periph *periph, int quirks, char *bit_string)
+{
+       if (quirks != 0) {
+               printf("%s%d: quirks=0x%b\n", periph->periph_name,
+                   periph->unit_number, quirks, bit_string);
+       }
+}
+
 static dev_match_ret
 xptbusmatch(struct dev_match_pattern *patterns, u_int num_patterns,
            struct cam_eb *bus)

Modified: stable/8/sys/cam/cam_xpt_periph.h
==============================================================================
--- stable/8/sys/cam/cam_xpt_periph.h   Fri Jun  7 12:24:15 2013        
(r251491)
+++ stable/8/sys/cam/cam_xpt_periph.h   Fri Jun  7 12:33:40 2013        
(r251492)
@@ -45,6 +45,8 @@ int32_t               xpt_add_periph(struct cam_perip
 void           xpt_remove_periph(struct cam_periph *periph);
 void           xpt_announce_periph(struct cam_periph *periph,
                                    char *announce_string);
+void           xpt_announce_quirks(struct cam_periph *periph,
+                                   int quirks, char *bit_string);
 #endif
 
 #endif /* _CAM_CAM_XPT_PERIPH_H */

Modified: stable/8/sys/cam/scsi/scsi_cd.c
==============================================================================
--- stable/8/sys/cam/scsi/scsi_cd.c     Fri Jun  7 12:24:15 2013        
(r251491)
+++ stable/8/sys/cam/scsi/scsi_cd.c     Fri Jun  7 12:33:40 2013        
(r251492)
@@ -92,6 +92,14 @@ typedef enum {
        CD_Q_10_BYTE_ONLY       = 0x10
 } cd_quirks;
 
+#define CD_Q_BIT_STRING                \
+       "\020"                  \
+       "\001NO_TOUCH"          \
+       "\002BCD_TRACKS"        \
+       "\003NO_CHANGER"        \
+       "\004CHANGER"           \
+       "\00510_BYTE_ONLY"
+
 typedef enum {
        CD_FLAG_INVALID         = 0x0001,
        CD_FLAG_NEW_DISC        = 0x0002,
@@ -1782,6 +1790,8 @@ cddone(struct cam_periph *periph, union 
                free(rdcap, M_SCSICD);
                if (announce_buf[0] != '\0') {
                        xpt_announce_periph(periph, announce_buf);
+                       xpt_announce_quirks(periph, softc->quirks,
+                           CD_Q_BIT_STRING);
                        if (softc->flags & CD_FLAG_CHANGER)
                                cdchangerschedule(softc);
                        /*

Modified: stable/8/sys/cam/scsi/scsi_ch.c
==============================================================================
--- stable/8/sys/cam/scsi/scsi_ch.c     Fri Jun  7 12:24:15 2013        
(r251491)
+++ stable/8/sys/cam/scsi/scsi_ch.c     Fri Jun  7 12:33:40 2013        
(r251492)
@@ -126,6 +126,10 @@ typedef enum {
        CH_Q_NO_DBD     = 0x01
 } ch_quirks;
 
+#define CH_Q_BIT_STRING        \
+       "\020"          \
+       "\001NO_DBD"
+
 #define ccb_state      ppriv_field0
 #define ccb_bp         ppriv_ptr1
 
@@ -639,8 +643,11 @@ chdone(struct cam_periph *periph, union 
                                announce_buf[0] = '\0';
                        }
                }
-               if (announce_buf[0] != '\0')
+               if (announce_buf[0] != '\0') {
                        xpt_announce_periph(periph, announce_buf);
+                       xpt_announce_quirks(periph, softc->quirks,
+                           CH_Q_BIT_STRING);
+               }
                softc->state = CH_STATE_NORMAL;
                free(mode_header, M_SCSICH);
                /*

Modified: stable/8/sys/cam/scsi/scsi_da.c
==============================================================================
--- stable/8/sys/cam/scsi/scsi_da.c     Fri Jun  7 12:24:15 2013        
(r251491)
+++ stable/8/sys/cam/scsi/scsi_da.c     Fri Jun  7 12:33:40 2013        
(r251492)
@@ -97,6 +97,13 @@ typedef enum {
        DA_Q_4K                 = 0x08
 } da_quirks;
 
+#define DA_Q_BIT_STRING                \
+       "\020"                  \
+       "\001NO_SYNC_CACHE"     \
+       "\002NO_6_BYTE"         \
+       "\003NO_PREVENT"        \
+       "\0044K"
+
 typedef enum {
        DA_CCB_PROBE_RC         = 0x01,
        DA_CCB_PROBE_RC16       = 0x02,
@@ -2778,6 +2785,8 @@ dadone(struct cam_periph *periph, union 
                                taskqueue_enqueue(taskqueue_thread,
                                                  &softc->sysctl_task);
                                xpt_announce_periph(periph, announce_buf);
+                               xpt_announce_quirks(periph, softc->quirks,
+                                   DA_Q_BIT_STRING);
                        } else {
                                xpt_print(periph->path, "fatal error, "
                                    "could not acquire reference count\n");

Modified: stable/8/sys/cam/scsi/scsi_sa.c
==============================================================================
--- stable/8/sys/cam/scsi/scsi_sa.c     Fri Jun  7 12:24:15 2013        
(r251491)
+++ stable/8/sys/cam/scsi/scsi_sa.c     Fri Jun  7 12:33:40 2013        
(r251492)
@@ -173,6 +173,17 @@ typedef enum {
        SA_QUIRK_NO_CPAGE       = 0x80  /* Don't use DEVICE COMPRESSION page */
 } sa_quirks;
 
+#define SA_QUIRK_BIT_STRING    \
+       "\020"                  \
+       "\001NOCOMP"            \
+       "\002FIXED"             \
+       "\003VARIABLE"          \
+       "\0042FM"               \
+       "\0051FM"               \
+       "\006NODREAD"           \
+       "\007NO_MODESEL"        \
+       "\010NO_CPAGE"
+
 #define        SAMODE(z)       (dev2unit(z) & 0x3)
 #define        SADENSITY(z)    ((dev2unit(z) >> 2) & 0x3)
 #define        SA_IS_CTRL(z)   (dev2unit(z) & (1 << 4))
@@ -1546,6 +1557,7 @@ saregister(struct cam_periph *periph, vo
        xpt_register_async(AC_LOST_DEVICE, saasync, periph, periph->path);
 
        xpt_announce_periph(periph, NULL);
+       xpt_announce_quirks(periph, softc->quirks, SA_QUIRK_BIT_STRING);
 
        return (CAM_REQ_CMP);
 }

Modified: stable/8/sys/dev/ahci/ahci.c
==============================================================================
--- stable/8/sys/dev/ahci/ahci.c        Fri Jun  7 12:24:15 2013        
(r251491)
+++ stable/8/sys/dev/ahci/ahci.c        Fri Jun  7 12:33:40 2013        
(r251492)
@@ -121,6 +121,22 @@ static struct {
 #define AHCI_Q_NOCOUNT 1024
 #define AHCI_Q_ALTSIG  2048
 #define AHCI_Q_NOMSI   4096
+
+#define AHCI_Q_BIT_STRING      \
+       "\020"                  \
+       "\001NOFORCE"           \
+       "\002NOPMP"             \
+       "\003NONCQ"             \
+       "\0041CH"               \
+       "\0052CH"               \
+       "\0064CH"               \
+       "\007EDGEIS"            \
+       "\010SATA2"             \
+       "\011NOBSYRES"          \
+       "\012NOAA"              \
+       "\013NOCOUNT"           \
+       "\014ALTSIG"            \
+       "\015NOMSI"
 } ahci_ids[] = {
        {0x43801002, 0x00, "ATI IXP600",        AHCI_Q_NOMSI},
        {0x43901002, 0x00, "ATI IXP700",        0},
@@ -482,6 +498,10 @@ ahci_attach(device_t dev)
                    "supported" : "not supported",
                    (ctlr->caps & AHCI_CAP_FBSS) ?
                    " with FBS" : "");
+       if (ctlr->quirks != 0) {
+               device_printf(dev, "quirks=0x%b\n", ctlr->quirks,
+                   AHCI_Q_BIT_STRING);
+       }
        if (bootverbose) {
                device_printf(dev, "Caps:%s%s%s%s%s%s%s%s %sGbps",
                    (ctlr->caps & AHCI_CAP_64BIT) ? " 64bit":"",
_______________________________________________
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