94
94
#define WDC_NVME_SN520_DEV_ID 0x5003
95
95
#define WDC_NVME_SN520_DEV_ID_1 0x5004
96
96
#define WDC_NVME_SN520_DEV_ID_2 0x5005
97
- #define WDC_NVME_SN530_DEV_ID 0x5009
98
- #define WDC_NVME_SN530_DEV_ID_1 0x501d
97
+
98
+ #define WDC_NVME_SN530_DEV_ID_1 0x5007
99
+ #define WDC_NVME_SN530_DEV_ID_2 0x5008
100
+ #define WDC_NVME_SN530_DEV_ID_3 0x5009
101
+ #define WDC_NVME_SN530_DEV_ID_4 0x500b
102
+ #define WDC_NVME_SN530_DEV_ID_5 0x501d
103
+
104
+ #define WDC_NVME_SN350_DEV_ID 0x5019
105
+
106
+ #define WDC_NVME_SN570_DEV_ID 0x501A
107
+
108
+ #define WDC_NVME_SN850X_DEV_ID 0x5030
109
+
110
+ #define WDC_NVME_SN5000_DEV_ID_1 0x5034
111
+ #define WDC_NVME_SN5000_DEV_ID_2 0x5035
112
+ #define WDC_NVME_SN5000_DEV_ID_3 0x5036
113
+ #define WDC_NVME_SN5000_DEV_ID_4 0x504A
114
+
115
+ #define WDC_NVME_SN7000S_DEV_ID_1 0x5039
116
+
117
+ #define WDC_NVME_SN7150_DEV_ID_1 0x503b
118
+ #define WDC_NVME_SN7150_DEV_ID_2 0x503c
119
+ #define WDC_NVME_SN7150_DEV_ID_3 0x503d
120
+ #define WDC_NVME_SN7150_DEV_ID_4 0x503e
121
+ #define WDC_NVME_SN7150_DEV_ID_5 0x503f
122
+
123
+ #define WDC_NVME_SN7100_DEV_ID_1 0x5043
124
+ #define WDC_NVME_SN7100_DEV_ID_2 0x5044
125
+ #define WDC_NVME_SN7100_DEV_ID_3 0x5045
126
+
127
+ #define WDC_NVME_SN8000S_DEV_ID 0x5049
128
+
99
129
#define WDC_NVME_SN720_DEV_ID 0x5002
100
- #define WDC_NVME_SN730A_DEV_ID 0x5006
130
+ #define WDC_NVME_SN730_DEV_ID 0x5006
101
131
#define WDC_NVME_SN740_DEV_ID 0x5015
102
132
#define WDC_NVME_SN740_DEV_ID_1 0x5016
103
133
#define WDC_NVME_SN740_DEV_ID_2 0x5017
@@ -989,7 +1019,7 @@ struct wdc_e6_log_hdr {
989
1019
/* DUI log header */
990
1020
struct wdc_dui_log_section {
991
1021
__le16 section_type ;
992
- __le16 data_area_id ;
1022
+ __le16 reserved ;
993
1023
__le32 section_size ;
994
1024
};
995
1025
@@ -1671,6 +1701,7 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
1671
1701
WDC_DRIVE_CAP_DRIVE_LOG | WDC_DRIVE_CAP_CRASH_DUMP | WDC_DRIVE_CAP_PFAIL_DUMP |
1672
1702
WDC_DRIVE_CAP_PURGE );
1673
1703
break ;
1704
+
1674
1705
case WDC_NVME_SN200_DEV_ID :
1675
1706
capabilities = (WDC_DRIVE_CAP_CAP_DIAG | WDC_DRIVE_CAP_INTERNAL_LOG | WDC_DRIVE_CAP_CLEAR_PCIE |
1676
1707
WDC_DRIVE_CAP_DRIVE_LOG | WDC_DRIVE_CAP_CRASH_DUMP | WDC_DRIVE_CAP_PFAIL_DUMP |
@@ -1686,10 +1717,12 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
1686
1717
WDC_NVME_ADD_LOG_OPCODE ))
1687
1718
capabilities |= WDC_DRIVE_CAP_C1_LOG_PAGE ;
1688
1719
break ;
1720
+
1689
1721
default :
1690
1722
capabilities = 0 ;
1691
1723
}
1692
1724
break ;
1725
+
1693
1726
case WDC_NVME_VID_2 :
1694
1727
switch (read_device_id ) {
1695
1728
case WDC_NVME_SN630_DEV_ID :
@@ -1708,6 +1741,7 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
1708
1741
WDC_NVME_GET_VU_SMART_LOG_OPCODE ))
1709
1742
capabilities |= WDC_DRIVE_CAP_D0_LOG_PAGE ;
1710
1743
break ;
1744
+
1711
1745
case WDC_NVME_SN640_DEV_ID :
1712
1746
fallthrough ;
1713
1747
case WDC_NVME_SN640_DEV_ID_1 :
@@ -1780,6 +1814,7 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
1780
1814
capabilities |= (WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY | WDC_DRIVE_CAP_CLEAR_PCIE );
1781
1815
1782
1816
break ;
1817
+
1783
1818
case WDC_NVME_SN840_DEV_ID :
1784
1819
fallthrough ;
1785
1820
case WDC_NVME_SN840_DEV_ID_1 :
@@ -1810,6 +1845,7 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
1810
1845
WDC_NVME_GET_VU_SMART_LOG_OPCODE ))
1811
1846
capabilities |= WDC_DRIVE_CAP_D0_LOG_PAGE ;
1812
1847
break ;
1848
+
1813
1849
case WDC_NVME_SN650_DEV_ID :
1814
1850
fallthrough ;
1815
1851
case WDC_NVME_SN650_DEV_ID_1 :
@@ -1869,6 +1905,7 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
1869
1905
WDC_DRIVE_CAP_CLEAR_PCIE );
1870
1906
1871
1907
break ;
1908
+
1872
1909
case WDC_NVME_SN861_DEV_ID :
1873
1910
fallthrough ;
1874
1911
case WDC_NVME_SN861_DEV_ID_1 :
@@ -1886,28 +1923,28 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
1886
1923
WDC_DRIVE_CAP_LOG_PAGE_DIR |
1887
1924
WDC_DRIVE_CAP_SET_LATENCY_MONITOR );
1888
1925
break ;
1926
+
1889
1927
default :
1890
1928
capabilities = 0 ;
1891
1929
}
1892
1930
break ;
1931
+
1893
1932
case WDC_NVME_SNDK_VID :
1894
1933
switch (read_device_id ) {
1895
1934
case WDC_NVME_SXSLCL_DEV_ID :
1896
1935
capabilities = WDC_DRIVE_CAP_DRIVE_ESSENTIALS ;
1897
1936
break ;
1937
+
1898
1938
case WDC_NVME_SN520_DEV_ID :
1899
1939
fallthrough ;
1900
1940
case WDC_NVME_SN520_DEV_ID_1 :
1901
1941
fallthrough ;
1902
1942
case WDC_NVME_SN520_DEV_ID_2 :
1903
1943
fallthrough ;
1904
- case WDC_NVME_SN530_DEV_ID :
1905
- fallthrough ;
1906
- case WDC_NVME_SN530_DEV_ID_1 :
1907
- fallthrough ;
1908
1944
case WDC_NVME_SN810_DEV_ID :
1909
1945
capabilities = WDC_DRIVE_CAP_DUI_DATA ;
1910
1946
break ;
1947
+
1911
1948
case WDC_NVME_SN820CL_DEV_ID :
1912
1949
capabilities = WDC_DRIVE_CAP_DUI_DATA |
1913
1950
WDC_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION |
@@ -1916,15 +1953,62 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
1916
1953
WDC_DRIVE_CAP_VU_FID_CLEAR_PCIE | WDC_DRIVE_CAP_NAND_STATS |
1917
1954
WDC_DRIVE_CAP_DEVICE_WAF | WDC_DRIVE_CAP_TEMP_STATS ;
1918
1955
break ;
1956
+
1919
1957
case WDC_NVME_SN720_DEV_ID :
1920
1958
capabilities = WDC_DRIVE_CAP_DUI_DATA | WDC_DRIVE_CAP_NAND_STATS |
1921
1959
WDC_DRIVE_CAP_NS_RESIZE ;
1922
1960
break ;
1923
- case WDC_NVME_SN730A_DEV_ID :
1961
+
1962
+ case WDC_NVME_SN730_DEV_ID :
1924
1963
capabilities = WDC_DRIVE_CAP_DUI | WDC_DRIVE_CAP_NAND_STATS |
1925
1964
WDC_DRIVE_CAP_INFO | WDC_DRIVE_CAP_TEMP_STATS |
1926
1965
WDC_DRIVE_CAP_VUC_CLEAR_PCIE | WDC_DRIVE_CAP_PCIE_STATS ;
1927
1966
break ;
1967
+
1968
+ case WDC_NVME_SN530_DEV_ID_1 :
1969
+ fallthrough ;
1970
+ case WDC_NVME_SN530_DEV_ID_2 :
1971
+ fallthrough ;
1972
+ case WDC_NVME_SN530_DEV_ID_3 :
1973
+ fallthrough ;
1974
+ case WDC_NVME_SN530_DEV_ID_4 :
1975
+ fallthrough ;
1976
+ case WDC_NVME_SN530_DEV_ID_5 :
1977
+ fallthrough ;
1978
+ case WDC_NVME_SN350_DEV_ID :
1979
+ fallthrough ;
1980
+ case WDC_NVME_SN570_DEV_ID :
1981
+ fallthrough ;
1982
+ case WDC_NVME_SN850X_DEV_ID :
1983
+ fallthrough ;
1984
+ case WDC_NVME_SN5000_DEV_ID_1 :
1985
+ fallthrough ;
1986
+ case WDC_NVME_SN5000_DEV_ID_2 :
1987
+ fallthrough ;
1988
+ case WDC_NVME_SN5000_DEV_ID_3 :
1989
+ fallthrough ;
1990
+ case WDC_NVME_SN5000_DEV_ID_4 :
1991
+ fallthrough ;
1992
+ case WDC_NVME_SN7000S_DEV_ID_1 :
1993
+ fallthrough ;
1994
+ case WDC_NVME_SN7150_DEV_ID_1 :
1995
+ fallthrough ;
1996
+ case WDC_NVME_SN7150_DEV_ID_2 :
1997
+ fallthrough ;
1998
+ case WDC_NVME_SN7150_DEV_ID_3 :
1999
+ fallthrough ;
2000
+ case WDC_NVME_SN7150_DEV_ID_4 :
2001
+ fallthrough ;
2002
+ case WDC_NVME_SN7150_DEV_ID_5 :
2003
+ fallthrough ;
2004
+ case WDC_NVME_SN7100_DEV_ID_1 :
2005
+ fallthrough ;
2006
+ case WDC_NVME_SN7100_DEV_ID_2 :
2007
+ fallthrough ;
2008
+ case WDC_NVME_SN7100_DEV_ID_3 :
2009
+ fallthrough ;
2010
+ case WDC_NVME_SN8000S_DEV_ID :
2011
+ fallthrough ;
1928
2012
case WDC_NVME_SN740_DEV_ID :
1929
2013
fallthrough ;
1930
2014
case WDC_NVME_SN740_DEV_ID_1 :
@@ -1936,6 +2020,7 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
1936
2020
case WDC_NVME_SN340_DEV_ID :
1937
2021
capabilities = WDC_DRIVE_CAP_DUI ;
1938
2022
break ;
2023
+
1939
2024
case WDC_NVME_ZN350_DEV_ID :
1940
2025
fallthrough ;
1941
2026
case WDC_NVME_ZN350_DEV_ID_1 :
@@ -1945,6 +2030,7 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
1945
2030
WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY_C2 | WDC_DRIVE_CAP_INFO |
1946
2031
WDC_DRIVE_CAP_CLOUD_SSD_VERSION | WDC_DRIVE_CAP_LOG_PAGE_DIR ;
1947
2032
break ;
2033
+
1948
2034
default :
1949
2035
capabilities = 0 ;
1950
2036
}
@@ -2901,6 +2987,8 @@ static int wdc_do_cap_dui_v1(int fd, char *file, __u32 xfer_size, int data_area,
2901
2987
fprintf (stderr , "INFO: WDC: Capture V1 Device Unit Info log, data area = %d\n" ,
2902
2988
data_area );
2903
2989
fprintf (stderr , "INFO: WDC: DUI Header Version = 0x%x\n" , log_hdr -> hdr_version );
2990
+ fprintf (stderr , "INFO: WDC: DUI section count = 0x%x\n" , log_hdr -> section_count );
2991
+ fprintf (stderr , "INFO: WDC: DUI log size = 0x%x\n" , log_hdr -> log_size );
2904
2992
}
2905
2993
2906
2994
if (!cap_dui_length ) {
@@ -2910,23 +2998,15 @@ static int wdc_do_cap_dui_v1(int fd, char *file, __u32 xfer_size, int data_area,
2910
2998
2911
2999
/* parse log header for all sections up to specified data area inclusively */
2912
3000
if (data_area != WDC_NVME_DUI_MAX_DATA_AREA ) {
2913
- for (j = 0 ; j < WDC_NVME_DUI_MAX_SECTION ; j ++ ) {
2914
- if (log_hdr -> log_section [j ].data_area_id <= data_area &&
2915
- log_hdr -> log_section [j ].data_area_id ) {
2916
- log_size += log_hdr -> log_section [j ].section_size ;
2917
- if (verbose )
2918
- fprintf (stderr ,
2919
- "%s: Data area ID %d : section size 0x%x, total size = 0x%x\n" ,
2920
- __func__ , log_hdr -> log_section [j ].data_area_id ,
2921
- (unsigned int )log_hdr -> log_section [j ].section_size ,
2922
- (unsigned int )log_size );
3001
+ for (j = 0 ; j < log_hdr -> section_count ; j ++ ) {
3002
+ log_size += log_hdr -> log_section [j ].section_size ;
3003
+ if (verbose )
3004
+ fprintf (stderr ,
3005
+ "%s: section size 0x%x, total size = 0x%x\n" ,
3006
+ __func__ ,
3007
+ (unsigned int )log_hdr -> log_section [j ].section_size ,
3008
+ (unsigned int )log_size );
2923
3009
2924
- } else {
2925
- if (verbose )
2926
- fprintf (stderr , "%s: break, total size = 0x%x\n" , __func__ ,
2927
- (unsigned int )log_size );
2928
- break ;
2929
- }
2930
3010
}
2931
3011
} else {
2932
3012
log_size = cap_dui_length ;
@@ -11507,7 +11587,7 @@ static int wdc_vs_drive_info(int argc, char **argv,
11507
11587
}
11508
11588
}
11509
11589
break ;
11510
- case WDC_NVME_SN730A_DEV_ID :
11590
+ case WDC_NVME_SN730_DEV_ID :
11511
11591
memcpy (vsData , & ctrl .vs [0 ], 32 );
11512
11592
11513
11593
major_rev = ctrl .sn [12 ];
0 commit comments