From: Tokunori Ikegami Date: Fri, 3 Jan 2025 11:07:44 +0000 (+0900) Subject: ocp: use struct nvme_timestamp type for FAHE-5 timestamp field X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=6bf3b7bf1ec85d43bf4c012241107b61d48a5689;p=users%2Fsagi%2Fnvme-cli.git ocp: use struct nvme_timestamp type for FAHE-5 timestamp field Since the field defined by the NVMe timestamp feature. Signed-off-by: Tokunori Ikegami --- diff --git a/nvme.h b/nvme.h index cae43452..363a82d9 100644 --- a/nvme.h +++ b/nvme.h @@ -31,6 +31,7 @@ #include "util/mem.h" #include "util/argconfig.h" #include "util/cleanup.h" +#include "util/types.h" enum nvme_print_flags { NORMAL = 0, @@ -147,7 +148,6 @@ const char *nvme_select_to_string(int sel); void d(unsigned char *buf, int len, int width, int group); void d_raw(unsigned char *buf, unsigned len); -uint64_t int48_to_long(uint8_t *data); int get_reg_size(int offset); bool nvme_is_ctrl_reg(int offset); diff --git a/plugins/ocp/ocp-fw-activation-history.h b/plugins/ocp/ocp-fw-activation-history.h index 15733a3f..fa37e4bd 100644 --- a/plugins/ocp/ocp-fw-activation-history.h +++ b/plugins/ocp/ocp-fw-activation-history.h @@ -4,6 +4,7 @@ * * Authors: karl.dedow@solidigm.com */ +#include #include "common.h" #include "linux/types.h" @@ -18,7 +19,7 @@ struct __packed fw_activation_history_entry { __u8 entry_length; __le16 reserved1; __le16 activation_count; - __le64 timestamp; + struct nvme_timestamp ts; __le64 reserved2; __le64 power_cycle_count; char previous_fw[8]; diff --git a/plugins/ocp/ocp-print-json.c b/plugins/ocp/ocp-print-json.c index 3ed74ffe..b193fc78 100644 --- a/plugins/ocp/ocp-print-json.c +++ b/plugins/ocp/ocp-print-json.c @@ -101,7 +101,7 @@ static void json_fw_activation_history(const struct fw_activation_history *fw_hi json_object_add_value_uint(entry_obj, "activation count", le16_to_cpu(entry->activation_count)); json_object_add_value_uint64(entry_obj, "timestamp", - (0x0000FFFFFFFFFFFF & le64_to_cpu(entry->timestamp))); + int48_to_long(entry->ts.timestamp)); json_object_add_value_uint(entry_obj, "power cycle count", le64_to_cpu(entry->power_cycle_count)); diff --git a/plugins/ocp/ocp-print-stdout.c b/plugins/ocp/ocp-print-stdout.c index f86c1b84..61309a93 100644 --- a/plugins/ocp/ocp-print-stdout.c +++ b/plugins/ocp/ocp-print-stdout.c @@ -75,8 +75,7 @@ static void stdout_fw_activation_history(const struct fw_activation_history *fw_ printf(" %-22s%d\n", "entry length:", entry->entry_length); printf(" %-22s%d\n", "activation count:", le16_to_cpu(entry->activation_count)); - printf(" %-22s%"PRIu64"\n", "timestamp:", - (0x0000FFFFFFFFFFFF & le64_to_cpu(entry->timestamp))); + printf(" %-22s%"PRIu64"\n", "timestamp:", int48_to_long(entry->ts.timestamp)); printf(" %-22s%"PRIu64"\n", "power cycle count:", le64_to_cpu(entry->power_cycle_count)); printf(" %-22s%.*s\n", "previous firmware:", (int)sizeof(entry->previous_fw), diff --git a/util/types.c b/util/types.c index 20c121b1..cc2e7550 100644 --- a/util/types.c +++ b/util/types.c @@ -36,7 +36,7 @@ long double int128_to_double(__u8 *data) return result; } -uint64_t int48_to_long(__u8 *data) +uint64_t int48_to_long(const __u8 *data) { int i; uint64_t result = 0; diff --git a/util/types.h b/util/types.h index b2e8fc8d..bb4125f2 100644 --- a/util/types.h +++ b/util/types.h @@ -36,7 +36,7 @@ typedef union nvme_uint128 nvme_uint128_t; nvme_uint128_t le128_to_cpu(__u8 *data); long double int128_to_double(__u8 *data); -uint64_t int48_to_long(__u8 *data); +uint64_t int48_to_long(const __u8 *data); char *uint128_t_to_string(nvme_uint128_t val); char *uint128_t_to_l10n_string(nvme_uint128_t val);