diff options
Diffstat (limited to '')
-rw-r--r-- | doc/rst/fabrics.rst | 4 | ||||
-rw-r--r-- | doc/rst/ioctl.rst | 52 | ||||
-rw-r--r-- | doc/rst/linux.rst | 229 | ||||
-rw-r--r-- | doc/rst/log.rst | 59 | ||||
-rw-r--r-- | doc/rst/nbft.rst | 19 | ||||
-rw-r--r-- | doc/rst/tree.rst | 14 | ||||
-rw-r--r-- | doc/rst/types.rst | 1183 |
7 files changed, 1531 insertions, 29 deletions
diff --git a/doc/rst/fabrics.rst b/doc/rst/fabrics.rst index 74d04e5..141c486 100644 --- a/doc/rst/fabrics.rst +++ b/doc/rst/fabrics.rst @@ -27,8 +27,8 @@ Fabrics-specific definitions. int nr_write_queues; int nr_poll_queues; int tos; - int keyring; - int tls_key; + long keyring; + long tls_key; bool duplicate_connect; bool disable_sqflow; bool hdr_digest; diff --git a/doc/rst/ioctl.rst b/doc/rst/ioctl.rst index 4d8af34..7b2003d 100644 --- a/doc/rst/ioctl.rst +++ b/doc/rst/ioctl.rst @@ -4218,6 +4218,34 @@ The nvme command status if a response was received (see :c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. +.. c:function:: int nvme_ns_mgmt_delete_timeout (int fd, __u32 nsid, __u32 timeout) + + Delete a non attached namespace with timeout + +**Parameters** + +``int fd`` + File descriptor of nvme device + +``__u32 nsid`` + Namespace identifier to delete + +``__u32 timeout`` + Override the default timeout to this value in milliseconds; + set to 0 to use the system default. + +**Description** + +It is recommended that a namespace being deleted is not attached to any +controller. Use the nvme_ns_detach_ctrls() first if the namespace is still +attached. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + .. c:function:: int nvme_ns_mgmt_delete (int fd, __u32 nsid) Delete a non attached namespace @@ -5201,27 +5229,3 @@ The nvme command status if a response was received (see :c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. -.. c:function:: void nvme_set_debug (bool debug) - - Set NVMe command debugging output - -**Parameters** - -``bool debug`` - true to enable or false to disable - - -.. c:function:: bool nvme_get_debug (void) - - Get NVMe command debugging output - -**Parameters** - -``void`` - no arguments - -**Return** - -false if disabled or true if enabled. - - diff --git a/doc/rst/linux.rst b/doc/rst/linux.rst index 819ee68..cf49851 100644 --- a/doc/rst/linux.rst +++ b/doc/rst/linux.rst @@ -463,6 +463,127 @@ its keys are available for further key lookups. with errno set. +.. c:function:: unsigned char * nvme_read_key (long keyring_id, long key_id, int *len) + + Read key raw data + +**Parameters** + +``long keyring_id`` + Id of the keyring holding ``key_id`` + +``long key_id`` + Key id + +``int *len`` + Length of the returned data + +**Description** + +Links the keyring specified by **keyring_id** into the session +keyring and reads the payload of the key specified by **key_id**. +**len** holds the size of the returned buffer. +If **keyring** is 0 the default keyring '.nvme' is used. + +**Return** + +Pointer to the payload on success, +or NULL with errno set otherwise. + + +.. c:function:: long nvme_update_key (long keyring_id, const char *key_type, const char *identity, unsigned char *key_data, int key_len) + + Update key raw data + +**Parameters** + +``long keyring_id`` + Id of the keyring holding ``key_id`` + +``const char *key_type`` + Type of the key to insert + +``const char *identity`` + Key identity string + +``unsigned char *key_data`` + Raw data of the key + +``int key_len`` + Length of **key_data** + +**Description** + +Links the keyring specified by **keyring_id** into the session +keyring and updates the key reference by **identity** with **key_data**. +The old key with identity **identity** will be revoked to make it +inaccessible. + +**Return** + +Key id of the new key or 0 with errno set otherwise. + + +.. c:macro:: nvme_scan_tls_keys_cb_t + + **Typedef**: Callback for iterating TLS keys + + +**Syntax** + + ``void nvme_scan_tls_keys_cb_t (long keyring, long key, char *desc, int desc_len, void *data)`` + +**Parameters** + +``long keyring`` + Keyring which has been iterated + +``long key`` + Key for which the callback has been invoked + +``char *desc`` + Description of the key + +``int desc_len`` + Length of **desc** + +``void *data`` + Pointer for caller data + +**Description** + +Called for each TLS PSK in the keyring. + + +.. c:function:: int nvme_scan_tls_keys (const char *keyring, nvme_scan_tls_keys_cb_t cb, void *data) + + Iterate over TLS keys in a keyring + +**Parameters** + +``const char *keyring`` + Keyring holding TLS keys + +``nvme_scan_tls_keys_cb_t cb`` + Callback function + +``void *data`` + Pointer for data to be passed to **cb** + +**Description** + +Iterates **keyring** and call **cb** for each TLS key. When **keyring** is NULL +the default '.nvme' keyring is used. +A TLS key must be of type 'psk' and the description must be of the +form 'NVMe<0|1><R|G>0<1|2> <identity>', otherwise it will be skipped +during iteration. + +**Return** + +Number of keys for which **cb** was called, or -1 with errno set +on error. + + .. c:function:: long nvme_insert_tls_key (const char *keyring, const char *key_type, const char *hostnqn, const char *subsysnqn, int hmac, unsigned char *configured_key, int key_len) Derive and insert TLS key @@ -578,3 +699,111 @@ The string containing the TLS identity. It is the responsibility of the caller to free the returned string. +.. c:function:: char * nvme_export_tls_key (const unsigned char *key_data, int key_len) + + Export a TLS key + +**Parameters** + +``const unsigned char *key_data`` + Raw data of the key + +``int key_len`` + Length of **key_data** + +**Description** + +Returns **key_data** in the PSK Interchange format as defined in section +3.6.1.5 of the NVMe TCP Transport specification. + +**Return** + +The string containing the TLS identity or NULL with errno set +on error. It is the responsibility of the caller to free the returned +string. + + +.. c:function:: unsigned char * nvme_import_tls_key (const char *encoded_key, int *key_len, unsigned int *hmac) + + Import a TLS key + +**Parameters** + +``const char *encoded_key`` + TLS key in PSK interchange format + +``int *key_len`` + Length of the resulting key data + +``unsigned int *hmac`` + HMAC algorithm + +**Description** + +Imports **key_data** in the PSK Interchange format as defined in section +3.6.1.5 of the NVMe TCP Transport specification. + +**Return** + +The raw data of the PSK or NULL with errno set on error. It is +the responsibility of the caller to free the returned string. + + +.. c:function:: int nvme_submit_passthru (int fd, unsigned long ioctl_cmd, struct nvme_passthru_cmd *cmd, __u32 *result) + + Low level ioctl wrapper for passthru commands + +**Parameters** + +``int fd`` + File descriptor of the nvme device + +``unsigned long ioctl_cmd`` + IOCTL command id + +``struct nvme_passthru_cmd *cmd`` + Passhtru command + +``__u32 *result`` + Optional field to return the result + +**Description** + +This is a low level library function which should not be used directly. It is +exposed as weak symbol so that the user application is able to provide their own +implementation of this function with additional debugging or logging code. + +**Return** + +The value from the ioctl system call (see ioctl documentation) + + +.. c:function:: int nvme_submit_passthru64 (int fd, unsigned long ioctl_cmd, struct nvme_passthru_cmd64 *cmd, __u64 *result) + + Low level ioctl wrapper for passthru commands + +**Parameters** + +``int fd`` + File descriptor of the nvme device + +``unsigned long ioctl_cmd`` + IOCTL command id + +``struct nvme_passthru_cmd64 *cmd`` + Passhtru command + +``__u64 *result`` + Optional field to return the result + +**Description** + +This is a low level library function which should not be used directly. It is +exposed as weak symbol so that the user application is able to provide their own +implementation of this function with additional debugging or logging code. + +**Return** + +The value from the ioctl system call (see ioctl documentation) + + diff --git a/doc/rst/log.rst b/doc/rst/log.rst index 67911a5..edbb330 100644 --- a/doc/rst/log.rst +++ b/doc/rst/log.rst @@ -28,6 +28,32 @@ logging functions Sets the default logging variables for the library. +.. c:function:: int nvme_get_logging_level (nvme_root_t r, bool *log_pid, bool *log_tstamp) + + Get current logging level + +**Parameters** + +``nvme_root_t r`` + nvme_root_t context + +``bool *log_pid`` + Pointer to store a current value of logging of + the PID flag at (optional). + +``bool *log_tstamp`` + Pointer to store a current value of logging of + the timestamp flag at (optional). + +**Description** + +Retrieves current values of logging variables. + +**Return** + +current log level value or DEFAULT_LOGLEVEL if not initialized. + + .. c:function:: void nvme_set_root (nvme_root_t r) Set nvme_root_t context @@ -47,3 +73,36 @@ the latest created root object. Note the first **nvme_free_tree** call will rese the global root object. +.. c:function:: void nvme_set_debug (bool debug) + + Set NVMe command debugging output + +**Parameters** + +``bool debug`` + true to enable or false to disable + +**Description** + +Don't use it, it's debricated. + + +.. c:function:: bool nvme_get_debug (void) + + Get NVMe command debugging output + +**Parameters** + +``void`` + no arguments + +**Description** + + +Don't use it, it's debricated. + +**Return** + +false if disabled or true if enabled. + + diff --git a/doc/rst/nbft.rst b/doc/rst/nbft.rst index 93a3642..2a7b72f 100644 --- a/doc/rst/nbft.rst +++ b/doc/rst/nbft.rst @@ -1,3 +1,12 @@ +.. _nbft.h: + +**nbft.h** + + +NVM Express Boot Specification, Revision 1.0 + +Note: this API is currently unstable, subject to further additions. + .. c:enum:: nbft_desc_type @@ -1716,6 +1725,8 @@ int controller_id; int asqsz; char *dhcp_root_path_string; + bool discovered; + bool unavailable; }; **Members** @@ -1785,6 +1796,14 @@ DHCP Root Path Override string (SSNS Extended Information Descriptor). +``discovered`` + Indicates that this namespace was acquired + through discovery. + +``unavailable`` + Namespace is unavailable as indicated by + the pre-OS driver. + diff --git a/doc/rst/tree.rst b/doc/rst/tree.rst index b73ffae..6f79703 100644 --- a/doc/rst/tree.rst +++ b/doc/rst/tree.rst @@ -1729,6 +1729,20 @@ Host interface name of **c** (if present) DH-HMAC-CHAP host key or NULL if not set +.. c:function:: const char * nvme_ctrl_get_cntlid (nvme_ctrl_t c) + + Controller id + +**Parameters** + +``nvme_ctrl_t c`` + Controller to be checked + +**Return** + +Controller id of **c** + + .. c:function:: void nvme_ctrl_set_dhchap_host_key (nvme_ctrl_t c, const char *key) Set host key diff --git a/doc/rst/types.rst b/doc/rst/types.rst index 2aecd14..1d6ad5a 100644 --- a/doc/rst/types.rst +++ b/doc/rst/types.rst @@ -296,6 +296,486 @@ Location) register is not supported by fabrics, but it can be checked here. true if given offset is 64bit register, otherwise it returns false. + + +.. c:enum:: nvme_cap + + This field indicates the controller capabilities register + +**Constants** + +``NVME_CAP_MQES_SHIFT`` + Shift amount to get the maximum queue entries supported + +``NVME_CAP_CQR_SHIFT`` + Shift amount to get the contiguous queues required + +``NVME_CAP_AMS_SHIFT`` + Shift amount to get the arbitration mechanism supported + +``NVME_CAP_TO_SHIFT`` + Shift amount to get the timeout + +``NVME_CAP_DSTRD_SHIFT`` + Shift amount to get the doorbell stride + +``NVME_CAP_NSSRC_SHIFT`` + Shift amount to get the NVM subsystem reset supported + +``NVME_CAP_CSS_SHIFT`` + Shift amount to get the command sets supported + +``NVME_CAP_BPS_SHIFT`` + Shift amount to get the boot partition support + +``NVME_CAP_CPS_SHIFT`` + Shift amount to get the controller power scope + +``NVME_CAP_MPSMIN_SHIFT`` + Shift amount to get the memory page size minimum + +``NVME_CAP_MPSMAX_SHIFT`` + Shift amount to get the memory page size maximum + +``NVME_CAP_PMRS_SHIFT`` + Shift amount to get the persistent memory region supported + +``NVME_CAP_CMBS_SHIFT`` + Shift amount to get the controller memory buffer supported + +``NVME_CAP_NSSS_SHIFT`` + Shift amount to get the NVM subsystem shutdown supported + +``NVME_CAP_CRMS_SHIFT`` + Shift amount to get the controller ready modes supported + +``NVME_CAP_MQES_MASK`` + Mask to get the maximum queue entries supported + +``NVME_CAP_CQR_MASK`` + Mask to get the contiguous queues required + +``NVME_CAP_AMS_MASK`` + Mask to get the arbitration mechanism supported + +``NVME_CAP_TO_MASK`` + Mask to get the timeout + +``NVME_CAP_DSTRD_MASK`` + Mask to get the doorbell stride + +``NVME_CAP_NSSRC_MASK`` + Mask to get the NVM subsystem reset supported + +``NVME_CAP_CSS_MASK`` + Mask to get the command sets supported + +``NVME_CAP_BPS_MASK`` + Mask to get the boot partition support + +``NVME_CAP_CPS_MASK`` + Mask to get the controller power scope + +``NVME_CAP_MPSMIN_MASK`` + Mask to get the memory page size minimum + +``NVME_CAP_MPSMAX_MASK`` + Mask to get the memory page size maximum + +``NVME_CAP_PMRS_MASK`` + Mask to get the persistent memory region supported + +``NVME_CAP_CMBS_MASK`` + Mask to get the controller memory buffer supported + +``NVME_CAP_NSSS_MASK`` + Mask to get the NVM subsystem shutdown supported + +``NVME_CAP_CRMS_MASK`` + Mask to get the controller ready modes supported + +``NVME_CAP_AMS_WRR`` + Weighted round robin with urgent priority class + +``NVME_CAP_AMS_VS`` + Vendor specific + +``NVME_CAP_CSS_NVM`` + NVM command set or a discovery controller + +``NVME_CAP_CSS_CSI`` + Controller supports one or more I/O command sets + +``NVME_CAP_CSS_ADMIN`` + No I/O command set is supported + +``NVME_CAP_CPS_NONE`` + Not reported + +``NVME_CAP_CPS_CTRL`` + Controller scope + +``NVME_CAP_CPS_DOMAIN`` + Domain scope + +``NVME_CAP_CPS_NVMS`` + NVM subsystem scope + +``NVME_CAP_CRWMS`` + Controller ready with media support + +``NVME_CAP_CRIMS`` + Controller ready independent of media support + + + + +.. c:enum:: nvme_vs + + This field indicates the version + +**Constants** + +``NVME_VS_TER_SHIFT`` + Shift amount to get the tertiary version + +``NVME_VS_MNR_SHIFT`` + Shift amount to get the minor version + +``NVME_VS_MJR_SHIFT`` + Shift amount to get the major version + +``NVME_VS_TER_MASK`` + Mask to get the tertiary version + +``NVME_VS_MNR_MASK`` + Mask to get the minor version + +``NVME_VS_MJR_MASK`` + Mask to get the major version + + + + +.. c:enum:: nvme_cc + + This field indicates the controller configuration + +**Constants** + +``NVME_CC_EN_SHIFT`` + Shift amount to get the enable + +``NVME_CC_CSS_SHIFT`` + Shift amount to get the I/O command set selected + +``NVME_CC_MPS_SHIFT`` + Shift amount to get the memory page size + +``NVME_CC_AMS_SHIFT`` + Shift amount to get the arbitration mechanism selected + +``NVME_CC_SHN_SHIFT`` + Shift amount to get the shutdown notification + +``NVME_CC_IOSQES_SHIFT`` + Shift amount to get the I/O submission queue entry size + +``NVME_CC_IOCQES_SHIFT`` + Shift amount to get the I/O completion queue entry size + +``NVME_CC_CRIME_SHIFT`` + Shift amount to get the controller ready independent of media enable + +``NVME_CC_EN_MASK`` + Mask to get the enable + +``NVME_CC_CSS_MASK`` + Mask to get the I/O command set selected + +``NVME_CC_MPS_MASK`` + Mask to get the memory page size + +``NVME_CC_AMS_MASK`` + Mask to get the arbitration mechanism selected + +``NVME_CC_SHN_MASK`` + Mask to get the shutdown notification + +``NVME_CC_CRIME_MASK`` + Mask to get the I/O submission queue entry size + +``NVME_CC_IOSQES_MASK`` + Mask to get the I/O completion queue entry size + +``NVME_CC_IOCQES_MASK`` + Mask to get the controller ready independent of media enable + +``NVME_CC_CSS_NVM`` + NVM command set + +``NVME_CC_CSS_CSI`` + All supported I/O command sets + +``NVME_CC_CSS_ADMIN`` + Admin command set only + +``NVME_CC_AMS_RR`` + Round robin + +``NVME_CC_AMS_WRRU`` + Weighted round robin with urgent priority class + +``NVME_CC_AMS_VS`` + Vendor specific + +``NVME_CC_SHN_NONE`` + No notification; no effect + +``NVME_CC_SHN_NORMAL`` + Normal shutdown notification + +``NVME_CC_SHN_ABRUPT`` + Abrupt shutdown notification + +``NVME_CC_CRWME`` + Controller ready with media enable + +``NVME_CC_CRIME`` + Controller ready independent of media enable + + + + +.. c:enum:: nvme_csts + + This field indicates the controller status register + +**Constants** + +``NVME_CSTS_RDY_SHIFT`` + Shift amount to get the ready + +``NVME_CSTS_CFS_SHIFT`` + Shift amount to get the controller fatal status + +``NVME_CSTS_SHST_SHIFT`` + Shift amount to get the shutdown status + +``NVME_CSTS_NSSRO_SHIFT`` + Shift amount to get the NVM subsystem reset occurred + +``NVME_CSTS_PP_SHIFT`` + Shift amount to get the processing paused + +``NVME_CSTS_ST_SHIFT`` + Shift amount to get the shutdown type + +``NVME_CSTS_RDY_MASK`` + Mask to get the ready + +``NVME_CSTS_CFS_MASK`` + Mask to get the controller fatal status + +``NVME_CSTS_SHST_MASK`` + Mask to get the shutdown status + +``NVME_CSTS_NSSRO_MASK`` + Mask to get the NVM subsystem reset occurred + +``NVME_CSTS_PP_MASK`` + Mask to get the processing paused + +``NVME_CSTS_ST_MASK`` + Mask to get the shutdown type + +``NVME_CSTS_SHST_NORMAL`` + Normal operation + +``NVME_CSTS_SHST_OCCUR`` + Shutdown processing occurring + +``NVME_CSTS_SHST_CMPLT`` + Shutdown processing complete + +``NVME_CSTS_SHN_MASK`` + Deprecated mask to get the shutdown status + + + + +.. c:enum:: nvme_aqa + + This field indicates the admin queue attributes + +**Constants** + +``NVME_AQA_ASQS_SHIFT`` + Shift amount to get the admin submission queue size + +``NVME_AQA_ACQS_SHIFT`` + Shift amount to get the admin completion queue size + +``NVME_AQA_ASQS_MASK`` + Mask to get the admin submission queue size + +``NVME_AQA_ACQS_MASK`` + Mask to get the admin completion queue size + + + + +.. c:enum:: nvme_asq + + This field indicates the admin submission queue base address + +**Constants** + +``NVME_ASQ_ASQB_SHIFT`` + Shift amount to get the admin submission queue base + + + + +.. c:enum:: nvme_acq + + This field indicates the admin completion queue base address + +**Constants** + +``NVME_ACQ_ACQB_SHIFT`` + Shift amount to get the admin completion queue base + + + + +.. c:enum:: nvme_cmbloc + + This field indicates the controller memory buffer location + +**Constants** + +``NVME_CMBLOC_BIR_SHIFT`` + Shift amount to get the base indicator register + +``NVME_CMBLOC_CQMMS_SHIFT`` + Shift amount to get the CMB queue mixed memory support + +``NVME_CMBLOC_CQPDS_SHIFT`` + Shift amount to get the CMB queue physically discontiguous support + +``NVME_CMBLOC_CDPLMS_SHIFT`` + Shift amount to get the CMB data pointer mixed locations support + +``NVME_CMBLOC_CDPCILS_SHIFT`` + Shift amount to get the CMB data pointer and command independent locations support + +``NVME_CMBLOC_CDMMMS_SHIFT`` + Shift amount to get the CMB data metadata mixed memory support + +``NVME_CMBLOC_CQDA_SHIFT`` + Shift amount to get the CMB queue dword alignment + +``NVME_CMBLOC_OFST_SHIFT`` + Shift amount to get the offset + +``NVME_CMBLOC_BIR_MASK`` + Mask to get the base indicator register + +``NVME_CMBLOC_CQMMS_MASK`` + Mask to get the CMB queue mixed memory support + +``NVME_CMBLOC_CQPDS_MASK`` + Mask to get the CMB queue physically discontiguous support + +``NVME_CMBLOC_CDPLMS_MASK`` + Mask to get the CMB data pointer mixed locations support + +``NVME_CMBLOC_CDPCILS_MASK`` + Mask to get the CMB data pointer and command independent locations support + +``NVME_CMBLOC_CDMMMS_MASK`` + Mask to get the CMB data metadata mixed memory support + +``NVME_CMBLOC_CQDA_MASK`` + Mask to get the CMB queue dword alignment + +``NVME_CMBLOC_OFST_MASK`` + Mask to get the offset + + + + +.. c:enum:: nvme_cmbsz + + This field indicates the controller memory buffer size + +**Constants** + +``NVME_CMBSZ_SQS_SHIFT`` + Shift amount to get the submission queue support + +``NVME_CMBSZ_CQS_SHIFT`` + Shift amount to get the completion queue support + +``NVME_CMBSZ_LISTS_SHIFT`` + Shift amount to get the PLP SGL list support + +``NVME_CMBSZ_RDS_SHIFT`` + Shift amount to get the read data support + +``NVME_CMBSZ_WDS_SHIFT`` + Shift amount to get the write data support + +``NVME_CMBSZ_SZU_SHIFT`` + Shift amount to get the size units + +``NVME_CMBSZ_SZ_SHIFT`` + Shift amount to get the size + +``NVME_CMBSZ_SQS_MASK`` + Mask to get the submission queue support + +``NVME_CMBSZ_CQS_MASK`` + Mask to get the completion queue support + +``NVME_CMBSZ_LISTS_MASK`` + Mask to get the PLP SGL list support + +``NVME_CMBSZ_RDS_MASK`` + Mask to get the read data support + +``NVME_CMBSZ_WDS_MASK`` + Mask to get the write data support + +``NVME_CMBSZ_SZU_MASK`` + Mask to get the size units + +``NVME_CMBSZ_SZ_MASK`` + Mask to get the size + +``NVME_CMBSZ_SZU_4K`` + 4 KiB + +``NVME_CMBSZ_SZU_64K`` + 64 KiB + +``NVME_CMBSZ_SZU_1M`` + 1 MiB + +``NVME_CMBSZ_SZU_16M`` + 16 MiB + +``NVME_CMBSZ_SZU_256M`` + 256 MiB + +``NVME_CMBSZ_SZU_4G`` + 4 GiB + +``NVME_CMBSZ_SZU_64G`` + 64 GiB + + .. c:function:: __u64 nvme_cmb_size (__u32 cmbsz) Calculate size of the controller memory buffer @@ -310,6 +790,387 @@ true if given offset is 64bit register, otherwise it returns false. size of controller memory buffer in bytes + + +.. c:enum:: nvme_bpinfo + + This field indicates the boot partition information + +**Constants** + +``NVME_BPINFO_BPSZ_SHIFT`` + Shift amount to get the boot partition size + +``NVME_BPINFO_BRS_SHIFT`` + Shift amount to get the boot read status + +``NVME_BPINFO_ABPID_SHIFT`` + Shift amount to get the active boot partition ID + +``NVME_BPINFO_BPSZ_MASK`` + Mask to get the boot partition size + +``NVME_BPINFO_BRS_MASK`` + Mask to get the boot read status + +``NVME_BPINFO_ABPID_MASK`` + Mask to get the active boot partition ID + +``NVME_BPINFO_BRS_NONE`` + No boot partition read operation requested + +``NVME_BPINFO_BRS_READ_IN_PROGRESS`` + Boot partition read in progress + +``NVME_BPINFO_BRS_READ_SUCCESS`` + Boot partition read completed successfully + +``NVME_BPINFO_BRS_READ_ERROR`` + Error completing boot partition read + + + + +.. c:enum:: nvme_bprsel + + This field indicates the boot partition read select + +**Constants** + +``NVME_BPRSEL_BPRSZ_SHIFT`` + Shift amount to get the boot partition read size + +``NVME_BPRSEL_BPROF_SHIFT`` + Shift amount to get the boot partition read offset + +``NVME_BPRSEL_BPID_SHIFT`` + Shift amount to get the boot partition identifier + +``NVME_BPRSEL_BPRSZ_MASK`` + Mask to get the boot partition read size + +``NVME_BPRSEL_BPROF_MASK`` + Mask to get the boot partition read offset + +``NVME_BPRSEL_BPID_MASK`` + Mask to get the boot partition identifier + + + + +.. c:enum:: nvme_bpmbl + + This field indicates the boot partition memory buffer location + +**Constants** + +``NVME_BPMBL_BMBBA_SHIFT`` + Shift amount to get the boot partition memory buffer base address + + + + +.. c:enum:: nvme_cmbmsc + + This field indicates the controller memory buffer memory space control + +**Constants** + +``NVME_CMBMSC_CRE_SHIFT`` + Shift amount to get the capabilities registers enabled + +``NVME_CMBMSC_CMSE_SHIFT`` + Shift amount to get the controller memory space enable + +``NVME_CMBMSC_CBA_SHIFT`` + Shift amount to get the controller base address + +``NVME_CMBMSC_CRE_MASK`` + Mask to get the capabilities registers enabled + +``NVME_CMBMSC_CMSE_MASK`` + Mask to get the controller memory space enable + + + + +.. c:enum:: nvme_cmbsts + + This field indicates the controller memory buffer status + +**Constants** + +``NVME_CMBSTS_CBAI_SHIFT`` + Shift amount to get the controller base address invalid + +``NVME_CMBSTS_CBAI_MASK`` + Mask to get the controller base address invalid + + + + +.. c:enum:: nvme_unit + + Defined buffer size and write throughput granularity units + +**Constants** + +``NVME_UNIT_B`` + Bytes or Bytes/second + +``NVME_UNIT_1K`` + 1 KiB or 1 KiB/second + +``NVME_UNIT_1M`` + 1 MiB or 1 MiB/second + +``NVME_UNIT_1G`` + 1 GiB or 1 GiB/second + + + + +.. c:enum:: nvme_cmbebs + + This field indicates the controller memory buffer elasticity buffer size + +**Constants** + +``NVME_CMBEBS_CMBSZU_SHIFT`` + Shift amount to get the CMB elasticity buffer size units + +``NVME_CMBEBS_RBB_SHIFT`` + Shift amount to get the read bypass behavior + +``NVME_CMBEBS_CMBWBZ_SHIFT`` + Shift amount to get the CMB elasiticity buffer size base + +``NVME_CMBEBS_CMBSZU_MASK`` + Mask to get the CMB elasticity buffer size units + +``NVME_CMBEBS_RBB_MASK`` + Mask to get the read bypass behavior + +``NVME_CMBEBS_CMBWBZ_MASK`` + Mask to get the CMB elasiticity buffer size base + +``NVME_CMBEBS_CMBSZU_B`` + Bytes granularity + +``NVME_CMBEBS_CMBSZU_1K`` + 1 KiB granularity + +``NVME_CMBEBS_CMBSZU_1M`` + 1 MiB granularity + +``NVME_CMBEBS_CMBSZU_1G`` + 1 GiB granularity + + + + +.. c:enum:: nvme_cmbswtp + + This field indicates the controller memory buffer sustained write throughput + +**Constants** + +``NVME_CMBSWTP_CMBSWTU_SHIFT`` + Shift amount to get the CMB sustained write throughput units + +``NVME_CMBSWTP_CMBSWTV_SHIFT`` + Shift amount to get the CMB sustained write throughput + +``NVME_CMBSWTP_CMBSWTU_MASK`` + Mask to get the CMB sustained write throughput units + +``NVME_CMBSWTP_CMBSWTV_MASK`` + Mask to get the CMB sustained write throughput + +``NVME_CMBSWTP_CMBSWTU_B`` + Bytes/second granularity + +``NVME_CMBSWTP_CMBSWTU_1K`` + 1 KiB/second granularity + +``NVME_CMBSWTP_CMBSWTU_1M`` + 1 MiB/second granularity + +``NVME_CMBSWTP_CMBSWTU_1G`` + 1 GiB/second granularity + + + + +.. c:enum:: nvme_crto + + This field indicates the controller ready timeouts + +**Constants** + +``NVME_CRTO_CRWMT_SHIFT`` + Shift amount to get the controller ready with media timeout + +``NVME_CRTO_CRIMT_SHIFT`` + Shift amount to get the controller ready independent of media timeout + +``NVME_CRTO_CRWMT_MASK`` + Mask to get the controller ready with media timeout + +``NVME_CRTO_CRIMT_MASK`` + Mask to get the controller ready independent of media timeout + + + + +.. c:enum:: nvme_pmrcap + + This field indicates the persistent memory region capabilities + +**Constants** + +``NVME_PMRCAP_RDS_SHIFT`` + Shift amount to get the read data support + +``NVME_PMRCAP_WDS_SHIFT`` + Shift amount to get the write data support + +``NVME_PMRCAP_BIR_SHIFT`` + Shift amount to get the base indicator register + +``NVME_PMRCAP_PMRTU_SHIFT`` + Shift amount to get the persistent memory region time units + +``NVME_PMRCAP_PMRWBM_SHIFT`` + Shift amount to get the persistent memory region write barrier mechanisms + +``NVME_PMRCAP_PMRTO_SHIFT`` + Shift amount to get the persistent memory region timeout + +``NVME_PMRCAP_CMSS_SHIFT`` + Shift amount to get the controller memory space supported + +``NVME_PMRCAP_PMRWMB_SHIFT`` + Deprecated shift amount to get the persistent memory region write barrier mechanisms + +``NVME_PMRCAP_RDS_MASK`` + Mask to get the read data support + +``NVME_PMRCAP_WDS_MASK`` + Mask to get the write data support + +``NVME_PMRCAP_BIR_MASK`` + Mask to get the base indicator register + +``NVME_PMRCAP_PMRTU_MASK`` + Mask to get the persistent memory region time units + +``NVME_PMRCAP_PMRWBM_MASK`` + Mask to get the persistent memory region write barrier mechanisms + +``NVME_PMRCAP_PMRTO_MASK`` + Mask to get the persistent memory region timeout + +``NVME_PMRCAP_CMSS_MASK`` + Mask to get the controller memory space supported + +``NVME_PMRCAP_PMRWMB_MASK`` + Deprecated mask to get the persistent memory region write barrier mechanisms + +``NVME_PMRCAP_PMRTU_500MS`` + 500 milliseconds + +``NVME_PMRCAP_PMRTU_60S`` + minutes + + + + +.. c:enum:: nvme_pmrctl + + This field indicates the persistent memory region control + +**Constants** + +``NVME_PMRCTL_EN_SHIFT`` + Shift amount to get the enable + +``NVME_PMRCTL_EN_MASK`` + Mask to get the enable + + + + +.. c:enum:: nvme_pmrsts + + This field indicates the persistent memory region status + +**Constants** + +``NVME_PMRSTS_ERR_SHIFT`` + Shift amount to get the error + +``NVME_PMRSTS_NRDY_SHIFT`` + Shift amount to get the not ready + +``NVME_PMRSTS_HSTS_SHIFT`` + Shift amount to get the health status + +``NVME_PMRSTS_CBAI_SHIFT`` + Shift amount to get the controller base address invalid + +``NVME_PMRSTS_ERR_MASK`` + Mask to get the error + +``NVME_PMRSTS_NRDY_MASK`` + Mask to get the not ready + +``NVME_PMRSTS_HSTS_MASK`` + Mask to get the health status + +``NVME_PMRSTS_CBAI_MASK`` + Mask to get the controller base address invalid + + + + +.. c:enum:: nvme_pmrebs + + This field indicates the persistent memory region elasticity buffer size + +**Constants** + +``NVME_PMREBS_PMRSZU_SHIFT`` + Shift amount to get the PMR elasticity buffer size units + +``NVME_PMREBS_RBB_SHIFT`` + Shift amount to get the read bypass behavior + +``NVME_PMREBS_PMRWBZ_SHIFT`` + Shift amount to get the PMR elasticity buffer size base + +``NVME_PMREBS_PMRSZU_MASK`` + Mask to get the PMR elasticity buffer size units + +``NVME_PMREBS_RBB_MASK`` + Mask to get the read bypass behavior + +``NVME_PMREBS_PMRWBZ_MASK`` + Mask to get the PMR elasticity buffer size base + +``NVME_PMREBS_PMRSZU_B`` + Bytes + +``NVME_PMREBS_PMRSZU_1K`` + 1 KiB + +``NVME_PMREBS_PMRSZU_1M`` + 1 MiB + +``NVME_PMREBS_PMRSZU_1G`` + 1 GiB + + .. c:function:: __u64 nvme_pmr_size (__u32 pmrebs) Calculate size of persistent memory region elasticity buffer @@ -324,6 +1185,39 @@ size of controller memory buffer in bytes size of controller persistent memory buffer in bytes + + +.. c:enum:: nvme_pmrswtp + + This field indicates the persistent memory region sustained write throughput + +**Constants** + +``NVME_PMRSWTP_PMRSWTU_SHIFT`` + Shift amount to get the PMR sustained write throughput units + +``NVME_PMRSWTP_PMRSWTV_SHIFT`` + Shift amount to get the PMR sustained write throughput + +``NVME_PMRSWTP_PMRSWTU_MASK`` + Mask to get the PMR sustained write throughput units + +``NVME_PMRSWTP_PMRSWTV_MASK`` + Mask to get the PMR sustained write throughput + +``NVME_PMRSWTP_PMRSWTU_BPS`` + Bytes per second + +``NVME_PMRSWTP_PMRSWTU_KBPS`` + 1 KiB / s + +``NVME_PMRSWTP_PMRSWTU_MBPS`` + 1 MiB / s + +``NVME_PMRSWTP_PMRSWTU_GBPS`` + 1 GiB / s + + .. c:function:: __u64 nvme_pmr_throughput (__u32 pmrswtp) Calculate throughput of persistent memory buffer @@ -340,6 +1234,51 @@ throughput of controller persistent memory buffer in bytes/second +.. c:enum:: nvme_pmrmsc + + This field indicates the persistent memory region memory space control + +**Constants** + +``NVME_PMRMSC_CMSE_SHIFT`` + Shift amount to get the controller memory space enable + +``NVME_PMRMSC_CBA_SHIFT`` + Shift amount to get the controller base address + +``NVME_PMRMSC_CMSE_MASK`` + Mask to get the controller memory space enable + + + + +.. c:enum:: nvme_flbas + + This field indicates the formatted LBA size + +**Constants** + +``NVME_FLBAS_LOWER_SHIFT`` + Shift amount to get the format index least significant 4 bits + +``NVME_FLBAS_META_EXT_SHIFT`` + Shift amount to get the metadata transferred + +``NVME_FLBAS_HIGHER_SHIFT`` + Shift amount to get the format index most significant 2 bits + +``NVME_FLBAS_LOWER_MASK`` + Mask to get the format index least significant 4 bits + +``NVME_FLBAS_META_EXT_MASK`` + Mask to get the metadata transferred + +``NVME_FLBAS_HIGHER_MASK`` + Mask to get the format index most significant 2 bits + + + + .. c:enum:: nvme_psd_flags Possible flag values in nvme power state descriptor @@ -1042,6 +1981,45 @@ power scale value +.. c:enum:: nvme_cmic + + This field indicates the controller multi-path I/O and NS sharing capabilities + +**Constants** + +``NVME_CMIC_MULTI_PORT_SHIFT`` + Shift amount to get the NVM subsystem port + +``NVME_CMIC_MULTI_CTRL_SHIFT`` + Shift amount to get the controllers + +``NVME_CMIC_MULTI_SRIOV_SHIFT`` + Shift amount to get the SR-IOV virtual function + +``NVME_CMIC_MULTI_ANA_SHIFT`` + Shift amount to get the asymmetric namespace access reporting + +``NVME_CMIC_MULTI_RSVD_SHIFT`` + Shift amount to get the reserved + +``NVME_CMIC_MULTI_PORT_MASK`` + Mask to get the NVM subsystem port + +``NVME_CMIC_MULTI_CTRL_MASK`` + Mask to get the controllers + +``NVME_CMIC_MULTI_SRIOV_MASK`` + Mask to get the SR-IOV virtual function + +``NVME_CMIC_MULTI_ANA_MASK`` + Mask to get the asymmetric namespace access reporting + +``NVME_CMIC_MULTI_RSVD_MASK`` + Mask to get the reserved + + + + .. c:enum:: nvme_id_ctrl_cmic Controller Multipath IO and Namespace Sharing Capabilities of the controller and NVM subsystem. @@ -4682,6 +5660,65 @@ bytes, in size. This log captures the controller’s internal state. +.. c:enum:: nvme_pel_rci + + This field indicates the persistent event log reporting context + +**Constants** + +``NVME_PEL_RCI_RCPID_SHIFT`` + Shift amount to get the reporting context port identifier + from the :c:type:`struct nvme_persistent_event_log <nvme_persistent_event_log>`.rci field. + +``NVME_PEL_RCI_RCPIT_SHIFT`` + Shift amount to get the reporting context port identifier + type from the :c:type:`struct nvme_persistent_event_log <nvme_persistent_event_log>`.rci field. + +``NVME_PEL_RCI_RCE_SHIFT`` + Shift amount to get the reporting context exists + from the :c:type:`struct nvme_persistent_event_log <nvme_persistent_event_log>`.rci field. + +``NVME_PEL_RCI_RSVD_SHIFT`` + Shift amount to get the reserved reporting context + from the :c:type:`struct nvme_persistent_event_log <nvme_persistent_event_log>`.rci field. + +``NVME_PEL_RCI_RCPID_MASK`` + Mask to get the reporting context port identifier from + the :c:type:`struct nvme_persistent_event_log <nvme_persistent_event_log>`.rci field. + +``NVME_PEL_RCI_RCPIT_MASK`` + Mask to get the reporting context port identifier type from + the :c:type:`struct nvme_persistent_event_log <nvme_persistent_event_log>`.rci field. + +``NVME_PEL_RCI_RCE_MASK`` + Mask to get the reporting context exists from + the :c:type:`struct nvme_persistent_event_log <nvme_persistent_event_log>`.rci field. + +``NVME_PEL_RCI_RSVD_MASK`` + Mask to get the reserved reporting context from + the :c:type:`struct nvme_persistent_event_log <nvme_persistent_event_log>`.rci field. + + + + +.. c:enum:: nvme_pel_rci_rcpit + + Persistent Event Log Reporting Context - Port Identifier Type + +**Constants** + +``NVME_PEL_RCI_RCPIT_NOT_EXIST`` + Does not already exist + +``NVME_PEL_RCI_RCPIT_EST_PORT`` + Established by an NVM subsystem port + +``NVME_PEL_RCI_RCPIT_EST_ME`` + Established by a Management Endpoint + + + + .. c:struct:: nvme_persistent_event_entry Persistent Event @@ -4787,6 +5824,52 @@ bytes, in size. This log captures the controller’s internal state. +.. c:enum:: nvme_pel_ehai + + This field indicates the persistent event header additional information + +**Constants** + +``NVME_PEL_EHAI_PIT_SHIFT`` + Shift amount to get the reporting context port identifier + from the :c:type:`struct nvme_persistent_event_log <nvme_persistent_event_log>`.rci field. + +``NVME_PEL_EHAI_RSVD_SHIFT`` + Shift amount to get the reserved reporting context + from the :c:type:`struct nvme_persistent_event_log <nvme_persistent_event_log>`.rci field. + +``NVME_PEL_EHAI_PIT_MASK`` + Mask to get the reporting context port identifier from + the :c:type:`struct nvme_st_result <nvme_st_result>`.dsts field. + +``NVME_PEL_EHAI_RSVD_MASK`` + Mask to get the reserved reporting context from + the :c:type:`struct nvme_st_result <nvme_st_result>`.dsts field. + + + + +.. c:enum:: nvme_pel_ehai_pit + + Persistent Event Header Additional Information - Port Identifier Type + +**Constants** + +``NVME_PEL_EHAI_PIT_NOT_REPORTED`` + PIT not reported and PELPID does not apply + +``NVME_PEL_EHAI_PIT_NSS_PORT`` + NVM subsystem port + +``NVME_PEL_EHAI_PIT_NMI_PORT`` + NVMe-MI port + +``NVME_PEL_EHAI_PIT_NOT_ASSOCIATED`` + Event not associated with any port and PELPID does not apply + + + + .. c:struct:: nvme_fw_commit_event Firmware Commit Event Data @@ -5186,6 +6269,39 @@ bytes, in size. This log captures the controller’s internal state. +.. c:enum:: nvme_set_feat_event_layout + + This field indicates the set feature event layout + +**Constants** + +``NVME_SET_FEAT_EVENT_DW_COUNT_SHIFT`` + Shift amount to get the Dword count from the + :c:type:`struct nvme_set_feature_event <nvme_set_feature_event>`.layout field. + +``NVME_SET_FEAT_EVENT_CC_DW0_SHIFT`` + Shift amount to get the logged command completion Dword 0 + from the :c:type:`struct nvme_set_feature_event <nvme_set_feature_event>`.layout field. + +``NVME_SET_FEAT_EVENT_MB_COUNT_SHIFT`` + Shift amount to get the memory buffer count from + the :c:type:`struct nvme_set_feature_event <nvme_set_feature_event>`.layout field. + +``NVME_SET_FEAT_EVENT_DW_COUNT_MASK`` + Mask to get the Dword count from the :c:type:`struct + nvme_set_feature_event <nvme_set_feature_event>`.layout field. + +``NVME_SET_FEAT_EVENT_CC_DW0_MASK`` + Mask to get the logged command completion Dword 0 from + the :c:type:`struct nvme_set_feature_event <nvme_set_feature_event>`.layout field. + +``NVME_SET_FEAT_EVENT_MB_COUNT_MASK`` + Mask to get the memory buffer count from the :c:type:`struct + nvme_set_feature_event <nvme_set_feature_event>`.layout field. + + + + .. c:struct:: nvme_thermal_exc_event Thermal Excursion Event Data @@ -5542,6 +6658,31 @@ bytes, in size. This log captures the controller’s internal state. +.. c:enum:: nvme_boot_partition_info + + This field indicates the boot partition information + +**Constants** + +``NVME_BOOT_PARTITION_INFO_BPSZ_SHIFT`` + Shift amount to get the boot partition size from + the :c:type:`struct nvme_boot_partition <nvme_boot_partition>`.bpinfo field. + +``NVME_BOOT_PARTITION_INFO_ABPID_SHIFT`` + Shift amount to get the active boot partition ID + from the :c:type:`struct nvme_boot_partition <nvme_boot_partition>`.bpinfo field. + +``NVME_BOOT_PARTITION_INFO_BPSZ_MASK`` + Mask to get the boot partition size from the + :c:type:`struct nvme_boot_partition <nvme_boot_partition>`.bpinfo field. + +``NVME_BOOT_PARTITION_INFO_ABPID_MASK`` + Mask to get the active boot partition ID from the + :c:type:`struct nvme_boot_partition <nvme_boot_partition>`.bpinfo field. + + + + .. c:struct:: nvme_eom_lane_desc EOM Lane Descriptor @@ -5716,18 +6857,51 @@ bytes, in size. This log captures the controller’s internal state. -.. c:enum:: nvme_eom_optional_data +.. c:enum:: nvme_eom_optional_data_present EOM Optional Data Present Fields **Constants** -``NVME_EOM_EYE_DATA_PRESENT`` - Eye Data Present +``NVME_EOM_ODP_PEFP_SHIFT`` + Shift amount to get the printable eye field present + from the :c:type:`struct nvme_phy_rx_eom_log <nvme_phy_rx_eom_log>`.odp field. + +``NVME_EOM_ODP_EDFP_SHIFT`` + Shift amount to get the eye data field present + from the :c:type:`struct nvme_phy_rx_eom_log <nvme_phy_rx_eom_log>`.odp field. + +``NVME_EOM_ODP_RSVD_SHIFT`` + Shift amount to get the reserved optional data present + from the :c:type:`struct nvme_phy_rx_eom_log <nvme_phy_rx_eom_log>`.odp field. + +``NVME_EOM_ODP_PEFP_MASK`` + Mask to get the printable eye field present + from the :c:type:`struct nvme_phy_rx_eom_log <nvme_phy_rx_eom_log>`.odp field. + +``NVME_EOM_ODP_EDFP_MASK`` + Mask to get the eye data field present + from the :c:type:`struct nvme_phy_rx_eom_log <nvme_phy_rx_eom_log>`.odp field. + +``NVME_EOM_ODP_RSVD_MASK`` + Mask to get the reserved data present + from the :c:type:`struct nvme_phy_rx_eom_log <nvme_phy_rx_eom_log>`.odp field. + + + + +.. c:enum:: nvme_eom_optional_data + + EOM Optional Data Present Fields (Deprecated) + +**Constants** ``NVME_EOM_PRINTABLE_EYE_PRESENT`` Printable Eye Present +``NVME_EOM_EYE_DATA_PRESENT`` + Eye Data Present + @@ -10914,6 +12088,9 @@ true if **status** is of the specified type and value ``NVME_LOG_LID_MI_CMD_SUPPORTED_EFFECTS`` NVMe-MI Commands Supported and Effects +``NVME_LOG_LID_CMD_AND_FEAT_LOCKDOWN`` + Command and Feature Lockdown + ``NVME_LOG_LID_BOOT_PARTITION`` Boot Partition |