From fa57395949f3e41d46f5ee5e5b76e77377dfde19 Mon Sep 17 00:00:00 2001 From: hsdhillo Date: Tue, 13 Jun 2023 13:52:34 -0700 Subject: [PATCH] plugins/solidigm: Added Marketing Name Log support for Solidigm. Signed-off-by: hsdhillo --- plugins/solidigm/meson.build | 2 + plugins/solidigm/solidigm-market-log.c | 63 ++++++++++++++++++++++++++ plugins/solidigm/solidigm-market-log.h | 8 ++++ plugins/solidigm/solidigm-nvme.c | 7 +++ plugins/solidigm/solidigm-nvme.h | 3 +- 5 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 plugins/solidigm/solidigm-market-log.c create mode 100644 plugins/solidigm/solidigm-market-log.h diff --git a/plugins/solidigm/meson.build b/plugins/solidigm/meson.build index 688e77b1..84495a14 100644 --- a/plugins/solidigm/meson.build +++ b/plugins/solidigm/meson.build @@ -7,5 +7,7 @@ sources += [ 'plugins/solidigm/solidigm-log-page-dir.c', 'plugins/solidigm/solidigm-telemetry.c', 'plugins/solidigm/solidigm-internal-logs.c', + 'plugins/solidigm/solidigm-market-log.c', ] subdir('solidigm-telemetry') + diff --git a/plugins/solidigm/solidigm-market-log.c b/plugins/solidigm/solidigm-market-log.c new file mode 100644 index 00000000..d7d38daa --- /dev/null +++ b/plugins/solidigm/solidigm-market-log.c @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2023 Solidigm. + * + * Authors: leonardo.da.cunha@solidigm.com + * Hardeep.Dhillon@solidigm.com + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "common.h" +#include "nvme.h" +#include "libnvme.h" +#include "plugin.h" +#include "nvme-print.h" + +#define MARKET_LOG_MAX_SIZE 512 + +int sldgm_get_market_log(int argc, char **argv, struct command *command, + struct plugin *plugin) +{ + const char *desc = "Get Solidigm Marketing Name log and show it."; + const char *raw = "dump output in binary format"; + struct nvme_dev *dev; + char log[MARKET_LOG_MAX_SIZE]; + int err; + + struct config { + bool raw_binary; + }; + + struct config cfg = { + }; + + OPT_ARGS(opts) = { + OPT_FLAG("raw-binary", 'b', &cfg.raw_binary, raw), + OPT_END() + }; + + err = parse_and_open(&dev, argc, argv, desc, opts); + if (err) + return err; + + err = nvme_get_log_simple(dev_fd(dev), 0xdd, sizeof(log), log); + if (!err) { + if (!cfg.raw_binary) + printf("Solidigm Marketing Name Log:\n%s\n", log); + else + d_raw((unsigned char *)&log, sizeof(log)); + } else if (err > 0) + + nvme_show_status(err); + /* Redundant close() to make static code analysis happy */ + close(dev->direct.fd); + dev_close(dev); + return err; +} diff --git a/plugins/solidigm/solidigm-market-log.h b/plugins/solidigm/solidigm-market-log.h new file mode 100644 index 00000000..6f808c4e --- /dev/null +++ b/plugins/solidigm/solidigm-market-log.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (c) 2023 Solidigm. + * + * Author: hardeep.dhillon@solidigm.com + */ + +int sldgm_get_market_log(int argc, char **argv, struct command *cmd, struct plugin *plugin); diff --git a/plugins/solidigm/solidigm-nvme.c b/plugins/solidigm/solidigm-nvme.c index bcc23146..b0db1ea2 100644 --- a/plugins/solidigm/solidigm-nvme.c +++ b/plugins/solidigm/solidigm-nvme.c @@ -17,6 +17,7 @@ #include "solidigm-latency-tracking.h" #include "solidigm-telemetry.h" #include "solidigm-log-page-dir.h" +#include "solidigm-market-log.h" #include "plugins/ocp/ocp-clear-fw-update-history.h" #include "plugins/ocp/ocp-smart-extended-log.h" @@ -75,3 +76,9 @@ static int get_log_page_directory_log(int argc, char **argv, struct command *cmd { return solidigm_get_log_page_directory_log(argc, argv, cmd, plugin); } + +static int get_market_log(int argc, char **argv, struct command *cmd, + struct plugin *plugin) +{ + return sldgm_get_market_log(argc, argv, cmd, plugin); +} diff --git a/plugins/solidigm/solidigm-nvme.h b/plugins/solidigm/solidigm-nvme.h index 937ceafc..69b63e5a 100644 --- a/plugins/solidigm/solidigm-nvme.h +++ b/plugins/solidigm/solidigm-nvme.h @@ -13,7 +13,7 @@ #include "cmd.h" -#define SOLIDIGM_PLUGIN_VERSION "0.13" +#define SOLIDIGM_PLUGIN_VERSION "0.14" PLUGIN(NAME("solidigm", "Solidigm vendor specific extensions", SOLIDIGM_PLUGIN_VERSION), COMMAND_LIST( @@ -22,6 +22,7 @@ PLUGIN(NAME("solidigm", "Solidigm vendor specific extensions", SOLIDIGM_PLUGIN_V ENTRY("vs-smart-add-log", "Get SMART / health extended log (redirects to ocp plug-in)", smart_cloud) ENTRY("vs-internal-log", "Retrieve Debug log binaries", get_internal_log) ENTRY("garbage-collect-log", "Retrieve Garbage Collection Log", get_garbage_collection_log) + ENTRY("market-log", "Retrieve Market Log", get_market_log) ENTRY("latency-tracking-log", "Enable/Retrieve Latency tracking Log", get_latency_tracking_log) ENTRY("parse-telemetry-log", "Parse Telemetry Log binary", get_telemetry_log) ENTRY("clear-fw-activate-history", "Clear firmware update history log (redirects to ocp plug-in)", clear_fw_update_history) -- 2.49.0