@@ -52,14 +52,16 @@ enum {
52
52
SCAO_ICS = 112 , /* Incomplete shutdowns */
53
53
SCAO_PFB = 120 , /* Percent free blocks */
54
54
SCAO_CPH = 128 , /* Capacitor health */
55
- SCAO_NEV = 130 , /* NVMe Errata Version */
55
+ SCAO_NBEV = 130 , /* NVMe Base Errata Version */
56
+ SCAO_NCSEV = 131 , /* NVMe Command Set Errata Version */
56
57
SCAO_UIO = 136 , /* Unaligned I/O */
57
58
SCAO_SVN = 144 , /* Security Version Number */
58
59
SCAO_NUSE = 152 , /* NUSE - Namespace utilization */
59
60
SCAO_PSC = 160 , /* PLP start count */
60
61
SCAO_EEST = 176 , /* Endurance estimate */
61
62
SCAO_PLRC = 192 , /* PCIe Link Retraining Count */
62
63
SCAO_PSCC = 200 , /* Power State Change Count */
64
+ SCAO_LPFR = 208 , /* Lowest Permitted Firmware Revision */
63
65
SCAO_LPV = 494 , /* Log page version */
64
66
SCAO_LPG = 496 , /* Log page GUID */
65
67
};
@@ -115,6 +117,10 @@ static void ocp_print_C0_log_normal(void *data)
115
117
(__u8 )log_data [SCAO_PFB ]);
116
118
printf (" Capacitor health %" PRIu16 "\n" ,
117
119
(uint16_t )le16_to_cpu (* (uint16_t * )& log_data [SCAO_CPH ]));
120
+ printf (" NVMe base errata version %c\n" ,
121
+ (uint16_t )le16_to_cpu (* (uint16_t * )& log_data [SCAO_CPH ]));
122
+ printf (" NVMe command set errata version %c\n" ,
123
+ (uint16_t )le16_to_cpu (* (uint16_t * )& log_data [SCAO_CPH ]));
118
124
printf (" Unaligned I/O %" PRIu64 "\n" ,
119
125
(uint64_t )le64_to_cpu (* (uint64_t * )& log_data [SCAO_UIO ]));
120
126
printf (" Security Version Number %" PRIu64 "\n" ,
@@ -130,7 +136,17 @@ static void ocp_print_C0_log_normal(void *data)
130
136
printf (" Log page GUID 0x" );
131
137
printf ("%" PRIx64 "%" PRIx64 "\n" , (uint64_t )le64_to_cpu (* (uint64_t * )& log_data [SCAO_LPG + 8 ]),
132
138
(uint64_t )le64_to_cpu (* (uint64_t * )& log_data [SCAO_LPG ]));
133
- if (smart_log_ver > 2 ) {
139
+ switch (smart_log_ver ) {
140
+ case 0 ... 1 :
141
+ break ;
142
+ default :
143
+ case 4 :
144
+ printf (" NVMe Command Set Errata Version %d\n" ,
145
+ (__u8 )log_data [SCAO_NCSEV ]);
146
+ printf (" Lowest Permitted Firmware Revision %" PRIu64 "\n" ,
147
+ le64_to_cpu (* (uint64_t * )& log_data [SCAO_PSCC ]));
148
+ fallthrough ;
149
+ case 2 ... 3 :
134
150
printf (" Errata Version Field %d\n" ,
135
151
(__u8 )log_data [SCAO_EVF ]);
136
152
printf (" Point Version Field %" PRIu16 "\n" ,
@@ -139,11 +155,11 @@ static void ocp_print_C0_log_normal(void *data)
139
155
le16_to_cpu (* (uint16_t * )& log_data [SCAO_MIVF ]));
140
156
printf (" Major Version Field %d\n" ,
141
157
(__u8 )log_data [SCAO_MAVF ]);
142
- printf (" NVMe Errata Version %d\n" ,
143
- (__u8 )log_data [SCAO_NEV ]);
144
- printf (" PCIe Link Retraining Count %" PRIu64 "\n" ,
158
+ printf (" NVMe Base Errata Version %d\n" ,
159
+ (__u8 )log_data [SCAO_NBEV ]);
160
+ printf (" PCIe Link Retraining Count %" PRIu64 "\n" ,
145
161
(uint64_t )le64_to_cpu (* (uint64_t * )& log_data [SCAO_PLRC ]));
146
- printf (" Power State Change Count %" PRIu64 "\n" ,
162
+ printf (" Power State Change Count %" PRIu64 "\n" ,
147
163
le64_to_cpu (* (uint64_t * )& log_data [SCAO_PSCC ]));
148
164
}
149
165
printf ("\n" );
@@ -229,7 +245,17 @@ static void ocp_print_C0_log_json(void *data)
229
245
(uint64_t )le64_to_cpu (* (uint64_t * )& log_data [SCAO_LPG ]));
230
246
json_object_add_value_string (root , "Log page GUID" , guid );
231
247
232
- if (smart_log_ver > 2 ) {
248
+ switch (smart_log_ver ) {
249
+ case 0 ... 1 :
250
+ break ;
251
+ default :
252
+ case 4 :
253
+ json_object_add_value_uint (root , "NVMe Command Set Errata Version" ,
254
+ (__u8 )log_data [SCAO_NCSEV ]);
255
+ json_object_add_value_uint (root , "Lowest Permitted Firmware Revision" ,
256
+ le64_to_cpu (* (uint64_t * )& log_data [SCAO_PSCC ]));
257
+ fallthrough ;
258
+ case 2 ... 3 :
233
259
json_object_add_value_uint (root , "Errata Version Field" ,
234
260
(__u8 )log_data [SCAO_EVF ]);
235
261
json_object_add_value_uint (root , "Point Version Field" ,
@@ -238,8 +264,8 @@ static void ocp_print_C0_log_json(void *data)
238
264
le16_to_cpu (* (uint16_t * )& log_data [SCAO_MIVF ]));
239
265
json_object_add_value_uint (root , "Major Version Field" ,
240
266
(__u8 )log_data [SCAO_MAVF ]);
241
- json_object_add_value_uint (root , "NVMe Errata Version" ,
242
- (__u8 )log_data [SCAO_NEV ]);
267
+ json_object_add_value_uint (root , "NVMe Base Errata Version" ,
268
+ (__u8 )log_data [SCAO_NBEV ]);
243
269
json_object_add_value_uint (root , "PCIe Link Retraining Count" ,
244
270
(uint64_t )le64_to_cpu (* (uint64_t * )& log_data [SCAO_PLRC ]));
245
271
json_object_add_value_uint (root , "Power State Change Count" ,
0 commit comments