]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
ocp-nvme: Recommit removed patch
authorSteven Seungcheol Lee <sc108.lee@samsung.com>
Tue, 12 Nov 2024 07:04:55 +0000 (16:04 +0900)
committerDaniel Wagner <wagi@monom.org>
Wed, 13 Nov 2024 07:36:16 +0000 (08:36 +0100)
commit a5f155c9740b ("ocp-nvme: Add LMDATA-37 for Latency Monitor Log")

Signed-off-by: Steven Seungcheol Lee <sc108.lee@samsung.com>
plugins/ocp/ocp-nvme.h
plugins/ocp/ocp-print-json.c
plugins/ocp/ocp-print-stdout.c

index 04acbfc0325829e7b03b95f2b5bea2d59e72de93..1fbc47487fe225e9bb4e09b8e2150efb820afb01 100644 (file)
@@ -73,8 +73,9 @@ struct __packed ssd_latency_monitor_log {
        __le64  static_latency_timestamp[4][3]; /* 0x130 - 0x18F */
        __le16  static_measured_latency[4][3];  /* 0x190 - 0x1A7 */
        __le16  static_latency_stamp_units;     /* 0x1A8 */
-       __u8    rsvd4[0x16];                    /* 0x1AA */
+       __u8    rsvd4[0x0A];                    /* 0x1AA */
 
+       __u8    latency_monitor_debug_log_size[0x0C]; /* 0x1B4 */
        __le16  debug_log_trigger_enable;       /* 0x1C0 */
        __le16  debug_log_measured_latency;     /* 0x1C2 */
        __le64  debug_log_latency_stamp;        /* 0x1C4 */
index a600628ddd29df7f23b6b39dc300e4f32772610b..1e0a2dbb760516ebbcc88dcca989bfaf47ec9cb4 100644 (file)
@@ -258,6 +258,7 @@ static void json_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *lo
        char buf[128];
        int i, j;
        char *operation[3] = {"Trim", "Write", "Read"};
+       __u16 log_page_version = le16_to_cpu(log_data->log_page_version);
 
        root = json_create_object();
 
@@ -374,6 +375,21 @@ static void json_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *lo
 
        json_object_add_value_uint(root, "Static Latency Stamp Units",
                le16_to_cpu(log_data->static_latency_stamp_units));
+
+       if (log_page_version >= 0x4) {
+               strcpy(buf, "0x");
+               for (i = ARRAY_SIZE(log_data->latency_monitor_debug_log_size) - 1;
+                       i > 0 && (log_data->latency_monitor_debug_log_size[i] == 0); i--)
+                       ;
+               while (i >= 0) {
+                       char hex_string[3];
+
+                       sprintf(hex_string, "%02x", log_data->latency_monitor_debug_log_size[i--]);
+                       strcat(buf, hex_string);
+               }
+               json_object_add_value_string(root, "Debug Telemetry Log Size", buf);
+       }
+
        json_object_add_value_uint(root, "Debug Log Trigger Enable",
                le16_to_cpu(log_data->debug_log_trigger_enable));
        json_object_add_value_uint(root, "Debug Log Measured Latency",
@@ -390,8 +406,7 @@ static void json_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *lo
                le16_to_cpu(log_data->debug_log_counter_trigger));
        json_object_add_value_uint(root, "Debug Log Stamp Units",
                le16_to_cpu(log_data->debug_log_stamp_units));
-       json_object_add_value_uint(root, "Log Page Version",
-               le16_to_cpu(log_data->log_page_version));
+       json_object_add_value_uint(root, "Log Page Version", log_page_version);
 
        char guid[(GUID_LEN * 2) + 1];
        char *ptr = &guid[0];
index e48c1714798416bddef9c1937cd7bd5d9244d429..48e4dc899a6ea62eadd3afd8e40ffce97599af14 100644 (file)
@@ -205,6 +205,7 @@ static void stdout_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *
 {
        char ts_buf[128];
        int i, j;
+       __u16 log_page_version = le16_to_cpu(log_data->log_page_version);
 
        printf("-Latency Monitor/C3 Log Page Data-\n");
        printf("  Controller   :  %s\n", dev->name);
@@ -237,6 +238,17 @@ static void stdout_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *
               le16_to_cpu(log_data->active_latency_stamp_units));
        printf("  Static Latency Stamp Units         %d\n",
               le16_to_cpu(log_data->static_latency_stamp_units));
+
+       if (log_page_version >= 0x4) {
+               printf("    Debug Telemetry Log Size         0x");
+               for (i = ARRAY_SIZE(log_data->latency_monitor_debug_log_size) - 1;
+                       i > 0 && (log_data->latency_monitor_debug_log_size[i] == 0); i--)
+                       ;
+               while (i >= 0)
+                       printf("%02x", log_data->latency_monitor_debug_log_size[i--]);
+               printf("\n");
+       }
+
        printf("  Debug Log Trigger Enable           %d\n",
               le16_to_cpu(log_data->debug_log_trigger_enable));
        printf("  Debug Log Measured Latency         %d\n",
@@ -253,8 +265,7 @@ static void stdout_c3_log(struct nvme_dev *dev, struct ssd_latency_monitor_log *
               le16_to_cpu(log_data->debug_log_counter_trigger));
        printf("  Debug Log Stamp Units              %d\n",
               le16_to_cpu(log_data->debug_log_stamp_units));
-       printf("  Log Page Version                   %d\n",
-              le16_to_cpu(log_data->log_page_version));
+       printf("  Log Page Version                   %d\n", log_page_version);
 
        char guid[(GUID_LEN * 2) + 1];
        char *ptr = &guid[0];