]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
types: add supported log pages log page (lid = 0x00)
authorGollu Appalanaidu <anaidu.gollu@samsung.com>
Fri, 5 Nov 2021 13:05:37 +0000 (14:05 +0100)
committerDaniel Wagner <dwagner@suse.de>
Tue, 16 Nov 2021 15:29:00 +0000 (16:29 +0100)
Signed-off-by: Gollu Appalanaidu <anaidu.gollu@samsung.com>
[dwagner: - ported from nvme-cli-monolithic
          - changed naming scheme to nvme_get_log_supported_log_pages]
Signed-off-by: Daniel Wagner <dwagner@suse.de>
src/libnvme.map
src/nvme/ioctl.c
src/nvme/ioctl.h
src/nvme/types.h

index d425ef0a031e33543334fafe1a68a00b627f6a91..1b495099a0ad730ced99b1a9b6aa658f08b7877b 100644 (file)
                nvme_get_log_reservation;
                nvme_get_log_sanitize;
                nvme_get_log_smart;
+               nvme_get_log_supported_log_pages;
                nvme_get_log_telemetry_ctrl;
                nvme_get_log_telemetry_host;
                nvme_get_new_host_telemetry;
index c638a61b16c93ada6275c684028cce962f5d836d..b7a8b27e8147ba90d917d36dd89e045aac44a446 100644 (file)
@@ -612,6 +612,14 @@ static int __nvme_get_log(int fd, enum nvme_cmd_get_log_lid lid, bool rae,
                            NVME_CSI_NVM, len, log);
 }
 
+int nvme_get_log_supported_log_pages(int fd, bool rae,
+                                    struct nvme_supported_log_pages *log)
+{
+       BUILD_ASSERT(sizeof(struct nvme_supported_log_pages) == 1024);
+       return __nvme_get_log(fd, NVME_LOG_LID_SUPPORTED_LOG_PAGES, rae,
+                             sizeof(*log), log);
+}
+
 int nvme_get_log_error(int fd, unsigned nr_entries, bool rae,
                       struct nvme_error_log_page *log)
 {
index 72fd02ca177b3a9afe5c5e25aa7098e187599a88..310b7a11509d13187e1bfd67ad34fc670a090463 100644 (file)
@@ -793,6 +793,17 @@ static inline int nvme_get_log_simple(int fd, enum nvme_cmd_get_log_lid lid,
        return nvme_get_nsid_log(fd, lid, NVME_NSID_ALL, len, log);
 }
 
+/** nvme_get_log_supported_log_pages() - Retrieve nmve supported log pages
+ * @fd:                File descriptor of nvme device
+ * @rae:       Retain asynchronous events
+ * @log:       Array of LID supported and Effects data structures
+ *
+ * Return: The nvme command status if a response was received (see
+ * &enum nvme_status_field) or -1 with errno set otherwise.
+ */
+int nvme_get_log_supported_log_pages(int fd, bool rae,
+                                    struct nvme_supported_log_pages *log);
+
 /**
  * nvme_get_log_error() - Retrieve nvme error log
  * @fd:                File descriptor of nvme device
index 7b7cd9ac082f594b44052b98766e0ddbed1d89fa..a8f4dd40c4dc9919251a1eb12f0f671cbd9ed3f0 100644 (file)
@@ -53,6 +53,8 @@
  * @NVME_LOG_LSI_NONE:         Use to omit a log lsi command parameter
  * @NVME_LOG_LPO_NONE:         Use to omit a log lpo command parameter
  * @NVME_IDENTIFY_DATA_SIZE:   The transfer size for nvme identify commands
+ * @NVME_LOG_SUPPORTED_LOG_PAGES_MAX: The lagest possible index in the supported
+ *                             log pages log.
  * @NVME_ID_NVMSET_LIST_MAX:   The largest possible nvmset index in identify
  *                             nvmeset
  * @NVME_ID_UUID_LIST_MAX:     The largest possible uuid index in identify
@@ -89,6 +91,7 @@ enum nvme_constants {
        NVME_LOG_LSI_NONE                       = 0,
        NVME_LOG_LPO_NONE                       = 0,
        NVME_IDENTIFY_DATA_SIZE                 = 4096,
+       NVME_LOG_SUPPORTED_LOG_PAGES_MAX        = 256,
        NVME_ID_NVMSET_LIST_MAX                 = 31,
        NVME_ID_UUID_LIST_MAX                   = 127,
        NVME_ID_CTRL_LIST_MAX                   = 2047,
@@ -2201,6 +2204,16 @@ struct nvme_id_domain_list {
        struct nvme_id_domain_attr domain_attr[NVME_ID_DOMAIN_LIST_MAX];
 };
 
+/**
+ * struct nvme_supported_log_pages -
+ * @lid_support:
+ *
+ * Supported Log Pages (Log Identifier 00h)
+ */
+struct nvme_supported_log_pages {
+       __le32  lid_support[NVME_LOG_SUPPORTED_LOG_PAGES_MAX];
+};
+
 /**
  * struct nvme_error_log_page - Error Information Log Entry (Log Identifier 01h)
  * @error_count:        Error Count: a 64-bit incrementing error count,
@@ -5069,6 +5082,7 @@ enum nvme_identify_cns {
 
 /**
  * enum nvme_cmd_get_log_lid -
+ * @NVME_LOG_LID_SUPPORTED_LOG_PAGES:
  * @NVME_LOG_LID_ERROR:
  * @NVME_LOG_LID_SMART:
  * @NVME_LOG_LID_FW_SLOT:
@@ -5092,6 +5106,7 @@ enum nvme_identify_cns {
  * @NVME_LOG_LID_ZNS_CHANGED_ZONES:
  */
 enum nvme_cmd_get_log_lid {
+       NVME_LOG_LID_SUPPORTED_LOG_PAGES                        = 0x00,
        NVME_LOG_LID_ERROR                                      = 0x01,
        NVME_LOG_LID_SMART                                      = 0x02,
        NVME_LOG_LID_FW_SLOT                                    = 0x03,