Skip to content

Commit c30898a

Browse files
ikegami-tigaw
authored andcommitted
ocp: add SMART / health information extended log page version 4
Add NVMe command set errata version and lowest permitted firmware revision. Signed-off-by: Tokunori Ikegami <ikegami.t@gmail.com>
1 parent db17e9a commit c30898a

File tree

1 file changed

+35
-9
lines changed

1 file changed

+35
-9
lines changed

plugins/ocp/ocp-smart-extended-log.c

+35-9
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,16 @@ enum {
5252
SCAO_ICS = 112, /* Incomplete shutdowns */
5353
SCAO_PFB = 120, /* Percent free blocks */
5454
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 */
5657
SCAO_UIO = 136, /* Unaligned I/O */
5758
SCAO_SVN = 144, /* Security Version Number */
5859
SCAO_NUSE = 152, /* NUSE - Namespace utilization */
5960
SCAO_PSC = 160, /* PLP start count */
6061
SCAO_EEST = 176, /* Endurance estimate */
6162
SCAO_PLRC = 192, /* PCIe Link Retraining Count */
6263
SCAO_PSCC = 200, /* Power State Change Count */
64+
SCAO_LPFR = 208, /* Lowest Permitted Firmware Revision */
6365
SCAO_LPV = 494, /* Log page version */
6466
SCAO_LPG = 496, /* Log page GUID */
6567
};
@@ -115,6 +117,10 @@ static void ocp_print_C0_log_normal(void *data)
115117
(__u8)log_data[SCAO_PFB]);
116118
printf(" Capacitor health %"PRIu16"\n",
117119
(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]));
118124
printf(" Unaligned I/O %"PRIu64"\n",
119125
(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_UIO]));
120126
printf(" Security Version Number %"PRIu64"\n",
@@ -130,7 +136,17 @@ static void ocp_print_C0_log_normal(void *data)
130136
printf(" Log page GUID 0x");
131137
printf("%"PRIx64"%"PRIx64"\n", (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_LPG + 8]),
132138
(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:
134150
printf(" Errata Version Field %d\n",
135151
(__u8)log_data[SCAO_EVF]);
136152
printf(" Point Version Field %"PRIu16"\n",
@@ -139,11 +155,11 @@ static void ocp_print_C0_log_normal(void *data)
139155
le16_to_cpu(*(uint16_t *)&log_data[SCAO_MIVF]));
140156
printf(" Major Version Field %d\n",
141157
(__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",
145161
(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",
147163
le64_to_cpu(*(uint64_t *)&log_data[SCAO_PSCC]));
148164
}
149165
printf("\n");
@@ -229,7 +245,17 @@ static void ocp_print_C0_log_json(void *data)
229245
(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_LPG]));
230246
json_object_add_value_string(root, "Log page GUID", guid);
231247

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:
233259
json_object_add_value_uint(root, "Errata Version Field",
234260
(__u8)log_data[SCAO_EVF]);
235261
json_object_add_value_uint(root, "Point Version Field",
@@ -238,8 +264,8 @@ static void ocp_print_C0_log_json(void *data)
238264
le16_to_cpu(*(uint16_t *)&log_data[SCAO_MIVF]));
239265
json_object_add_value_uint(root, "Major Version Field",
240266
(__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]);
243269
json_object_add_value_uint(root, "PCIe Link Retraining Count",
244270
(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PLRC]));
245271
json_object_add_value_uint(root, "Power State Change Count",

0 commit comments

Comments
 (0)