summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/common/pci/pci_strings.c7
-rw-r--r--usr/src/uts/common/io/sata/impl/sata.c10
-rw-r--r--usr/src/uts/common/sys/sata/impl/sata.h1
-rw-r--r--usr/src/uts/common/sys/sata/sata_defs.h17
4 files changed, 23 insertions, 12 deletions
diff --git a/usr/src/common/pci/pci_strings.c b/usr/src/common/pci/pci_strings.c
index 42501f5e05..0b04a06e7e 100644
--- a/usr/src/common/pci/pci_strings.c
+++ b/usr/src/common/pci/pci_strings.c
@@ -23,8 +23,9 @@
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
-
-#pragma ident "%Z%%M% %I% %E% SMI"
+/*
+ * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
+ */
#include <sys/types.h>
#include <sys/stat.h>
@@ -42,7 +43,7 @@ const pci_class_strings_t class_pci[] = {
1, 5, 0x20, "ATA controller with single DMA", "ata",
1, 5, 0x30, "ATA controller with chained DMA", "ata",
1, 6, 0, "Serial ATA Direct Port Access (DPA)", "sata",
- 1, 6, 1, "SATA AHCI 1.0 Interface", "sata",
+ 1, 6, 1, "SATA AHCI Interface", "sata",
1, 6, 2, "Serial Storage Bus Interface", "sata",
1, 7, 0, "Serial Attached SCSI Controller", "sas",
1, 7, 1, "Serial Storage Bus Interface", "sas",
diff --git a/usr/src/uts/common/io/sata/impl/sata.c b/usr/src/uts/common/io/sata/impl/sata.c
index 2bab576495..67147e0c21 100644
--- a/usr/src/uts/common/io/sata/impl/sata.c
+++ b/usr/src/uts/common/io/sata/impl/sata.c
@@ -12803,7 +12803,9 @@ sata_show_drive_info(sata_hba_inst_t *sata_hba_inst,
(sdinfo->satadrv_id.ai_features87 & SATA_SMART_SELF_TEST_SUPPORTED))
(void) strlcat(msg_buf, ", SMART self-test", MAXPATHLEN);
cmn_err(CE_CONT, "?\t %s\n", msg_buf);
- if (sdinfo->satadrv_features_support & SATA_DEV_F_SATA2)
+ if (sdinfo->satadrv_features_support & SATA_DEV_F_SATA3)
+ cmn_err(CE_CONT, "?\tSATA Gen3 signaling speed (6.0Gbps)\n");
+ else if (sdinfo->satadrv_features_support & SATA_DEV_F_SATA2)
cmn_err(CE_CONT, "?\tSATA Gen2 signaling speed (3.0Gbps)\n");
else if (sdinfo->satadrv_features_support & SATA_DEV_F_SATA1)
cmn_err(CE_CONT, "?\tSATA Gen1 signaling speed (1.5Gbps)\n");
@@ -13764,7 +13766,11 @@ sata_fetch_device_identify_data(sata_hba_inst_t *sata_hba_inst,
sdinfo->satadrv_features_support |=
SATA_DEV_F_NCQ;
if (sdinfo->satadrv_id.ai_satacap &
- (SATA_1_SPEED | SATA_2_SPEED)) {
+ (SATA_1_SPEED | SATA_2_SPEED | SATA_3_SPEED)) {
+ if (sdinfo->satadrv_id.ai_satacap &
+ SATA_3_SPEED)
+ sdinfo->satadrv_features_support |=
+ SATA_DEV_F_SATA3;
if (sdinfo->satadrv_id.ai_satacap &
SATA_2_SPEED)
sdinfo->satadrv_features_support |=
diff --git a/usr/src/uts/common/sys/sata/impl/sata.h b/usr/src/uts/common/sys/sata/impl/sata.h
index 5d03a0e696..c2454f0e48 100644
--- a/usr/src/uts/common/sys/sata/impl/sata.h
+++ b/usr/src/uts/common/sys/sata/impl/sata.h
@@ -376,6 +376,7 @@ typedef struct sata_pmport_info sata_pmport_info_t;
#define SATA_DEV_F_SATA1 0x10
#define SATA_DEV_F_SATA2 0x20
#define SATA_DEV_F_TCQ 0x40 /* Non NCQ tagged queuing */
+#define SATA_DEV_F_SATA3 0x80
/*
* Device features enabled (satadrv_features_enabled)
diff --git a/usr/src/uts/common/sys/sata/sata_defs.h b/usr/src/uts/common/sys/sata/sata_defs.h
index 9e803b9a23..049b42d60c 100644
--- a/usr/src/uts/common/sys/sata/sata_defs.h
+++ b/usr/src/uts/common/sys/sata/sata_defs.h
@@ -418,6 +418,7 @@ typedef struct sata_id {
/* SATA Capabilites bits (word 76) */
#define SATA_NCQ 0x100
+#define SATA_3_SPEED 0x008
#define SATA_2_SPEED 0x004
#define SATA_1_SPEED 0x002
@@ -745,9 +746,10 @@ struct mode_acoustic_management {
#define SSTATUS_SET_DET(x, new_val) \
(x = (x & ~SSTATUS_DET) | (new_val & SSTATUS_DET))
-#define SSTATUS_SPD_NOLIMIT 0 /* No speed limit */
-#define SSTATUS_SPD_GEN1 1 /* Limit Gen 1 rate */
-#define SSTATUS_SPD_GEN2 2 /* Limit Gen 2 rate */
+#define SSTATUS_SPD_NODEV 0 /* No device present */
+#define SSTATUS_SPD_GEN1 1 /* Gen 1 rate negotiated */
+#define SSTATUS_SPD_GEN2 2 /* Gen 2 rate negotiated */
+#define SSTATUS_SPD_GEN3 3 /* Gen 3 rate negotiated */
/*
* sstatus IPM values
@@ -794,10 +796,10 @@ struct mode_acoustic_management {
#define SCONTROL_IPM_SHIFT 8
#define SCONTROL_SPM_SHIFT 12
-#define SCONTROL_DET (0xf << SSTATUS_DET_SHIFT)
-#define SCONTROL_SPD (0xf << SSTATUS_SPD_SHIFT)
-#define SCONTROL_IPM (0xf << SSTATUS_IPM_SHIFT)
-#define SCONTROL_SPM (0xf << SSTATUS_SPM_SHIFT)
+#define SCONTROL_DET (0xf << SCONTROL_DET_SHIFT)
+#define SCONTROL_SPD (0xf << SCONTROL_SPD_SHIFT)
+#define SCONTROL_IPM (0xf << SCONTROL_IPM_SHIFT)
+#define SCONTROL_SPM (0xf << SCONTROL_SPM_SHIFT)
#define SCONTROL_GET_DET(x) \
(x & SCONTROL_DET)
@@ -812,6 +814,7 @@ struct mode_acoustic_management {
#define SCONTROL_SPD_NOLIMIT 0 /* No speed limit */
#define SCONTROL_SPD_GEN1 1 /* Limit Gen 1 rate */
#define SCONTROL_SPD_GEN2 2 /* Limit Gen 2 rate */
+#define SCONTROL_SPD_GEN3 3 /* Limit Gen 3 rate */
#define SCONTROL_GET_IPM(x) \
((x & SCONTROL_IPM) >> SCONTROL_IPM_SHIFT)