OpenSSD Cosmos+ Platform Firmware  0.0.2
The firmware of Cosmos+ OpenSSD Platform for TOSHIBA nand flash module.
nvme.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _NVME_COMMAND
 
struct  _NVME_ADMIN_COMMAND
 
struct  _ADMIN_SET_FEATURES_NUMBER_OF_QUEUES_COMPLETE
 
struct  _NVME_IO_COMMAND
 
struct  _NVME_COMPLETION
 The main structure of completion queue entry. More...
 
struct  _ADMIN_SET_FEATURES_DW10
 
struct  _ADMIN_SET_FEATURES_NUMBER_OF_QUEUES_DW11
 
struct  _ADMIN_GET_FEATURES_DW10
 
struct  _ADMIN_CREATE_IO_CQ_DW10
 
struct  _ADMIN_CREATE_IO_CQ_DW11
 
struct  _ADMIN_DELETE_IO_CQ_DW10
 
struct  _ADMIN_CREATE_IO_SQ_DW10
 
struct  _ADMIN_CREATE_IO_SQ_DW11
 
struct  _ADMIN_DELETE_IO_SQ_DW10
 
struct  _ADMIN_IDENTIFY_COMMAND_DW10
 
struct  _ADMIN_GET_LOG_PAGE_DW10
 
struct  _ADMIN_IDENTIFY_POWER_STATE_DESCRIPTOR
 
struct  _ADMIN_IDENTIFY_CONTROLLER
 
struct  _ADMIN_IDENTIFY_FORMAT_DATA
 
struct  _ADMIN_IDENTIFY_NAMESPACE
 
struct  _IO_WRITE_COMMAND_DW12
 
struct  _IO_WRITE_COMMAND_DW13
 
struct  _IO_WRITE_COMMAND_DW15
 
struct  _IO_READ_COMMAND_DW12
 
struct  _IO_READ_COMMAND_DW13
 
struct  _IO_READ_COMMAND_DW15
 
struct  _IO_DATASET_MANAGEMENT_COMMAND_DW10
 
struct  _IO_DATASET_MANAGEMENT_COMMAND_DW11
 
struct  _DATASET_MANAGEMENT_CONTEXT_ATTRIBUTES
 
struct  _DATASET_MANAGEMENT_RANGE
 
struct  _NVME_ADMIN_QUEUE_STATUS
 
struct  _NVME_IO_SQ_STATUS
 
struct  _NVME_IO_CQ_STATUS
 
struct  _NVME_STATUS
 

Macros

#define MAX_NUM_OF_IO_SQ   8
 
#define MAX_NUM_OF_IO_CQ   8
 
#define ADMIN_CMD_DRAM_DATA_BUFFER   0x00200000
 
#define STORAGE_CAPACITY_L   0x00000000
 
#define STORAGE_CAPACITY_H   0x00000000
 
#define MAX_NUM_OF_NLB   (512 * 1024 / 4096)
 
#define ADMIN_DELETE_IO_SQ   0x00
 
#define ADMIN_CREATE_IO_SQ   0x01
 
#define ADMIN_GET_LOG_PAGE   0x02
 
#define ADMIN_DELETE_IO_CQ   0x04
 
#define ADMIN_CREATE_IO_CQ   0x05
 
#define ADMIN_IDENTIFY   0x06
 
#define ADMIN_ABORT   0x08
 
#define ADMIN_SET_FEATURES   0x09
 
#define ADMIN_GET_FEATURES   0x0A
 
#define ADMIN_ASYNCHRONOUS_EVENT_REQUEST   0x0C
 
#define ADMIN_FIRMWARE_ACTIVATE   0x10
 
#define ADMIN_FIRMWARE_IMAGE_DOWNLOAD   0x11
 
#define ADMIN_FORMAT_NVM   0x80
 
#define ADMIN_DOORBELL_BUFFER_CONFIG   0x7C
 
#define ADMIN_SECURITY_SEND   0x81
 
#define ADMIN_SECURITY_RECEIVE   0x82
 
#define IO_NVM_FLUSH   0x00
 
#define IO_NVM_WRITE   0x01
 
#define IO_NVM_READ   0x02
 
#define IO_NVM_WRITE_UNCORRECTABLE   0x04 /* Not acceptable yet */
 
#define IO_NVM_COMPARE   0x05 /* Not acceptable yet */
 
#define IO_NVM_DATASET_MANAGEMENT   0x09 /* Not acceptable yet */
 
#define SCT_GENERIC_COMMAND_STATUS   0
 
#define SCT_COMMAND_SPECIFIC_STATUS   1
 
#define SCT_MEDIA_AND_DATA_INTEGRITY_ERRORS   2
 
#define SCT_VENDOR_SPECIFIC   7
 
#define SC_SUCCESSFUL_COMPLETION   0x00
 
#define SC_INVALID_COMMAND_OPCODE   0x01
 
#define SC_INVALID_FIELD_IN_COMMAND   0x02
 
#define SC_COMMAND_ID_CONFLICT   0x03
 
#define SC_DATA_TRANSFER_ERROR   0x04
 
#define SC_COMMANDS_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION   0x05
 
#define SC_INTERNAL_DEVICE_ERROR   0x06
 
#define SC_COMMAND_ABORT_REQUESTED   0x07
 
#define SC_COMMAND_ABORTED_DUE_TO_SQ_DELETION   0x08
 
#define SC_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND   0x09
 
#define SC_COMMAND_ABORTED_DUE_TO_MISSING_FUSED_COMMAND   0x0A
 
#define SC_INVALID_NAMESPACE_OR_FORMAT   0x0B
 
#define SC_COMMAND_SEQUENCE_ERROR   0x0C
 
#define SC_INVALID_SGL_SEGMENT_DESCRIPTOR   0x0D
 
#define SC_INVALID_NUMBER_OF_SGL_DESCRIPTORS   0x0E
 
#define SC_DATA_SGL_LENGTH_INVALID   0x0F
 
#define SC_METADATA_SGL_LENGTH_INVALID   0x10
 
#define SC_SGL_DESCRIPTOR_TYPE_INVALID   0x11
 
#define SC_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER   0x12
 
#define SC_PRP_OFFSET_INVALID   0x13
 
#define SC_ATOMIC_WRITE_UNIT_EXCEEDED   0x14
 
#define SC_SGL_OFFSET_INVALID   0x16
 
#define SC_SGL_SUB_TYPE_INVALID   0x17
 
#define SC_HOST_IDENTIFIER_INCONSISTENT_FORMAT   0x18
 
#define SC_KEEP_ALIVE_TIMEOUT_EXPIRED   0x19
 
#define SC_KEEP_ALIVE_TIMEOUT_INVALID   0x1A
 
#define SC_LBA_OUT_OF_RANGE   0x80
 
#define SC_CAPACITY_EXCEEDED   0x81
 
#define SC_NAMESPACE_NOT_READY   0x82
 
#define SC_RESERVATION_CONFLICT   0x83
 
#define SC_FORMAT_IN_PROGRESS   0x84
 
#define SC_COMPLETION_QUEUE_INVALID   0x00
 
#define SC_INVALID_QUEUE_IDENTIFIER    0x01
 
#define SC_INVALID_QUEUE_SIZE   0x02
 
#define SC_ABORT_COMMAND_LIMIT_EXCEEDED   0x03
 
#define SC_ASYNCHRONOUS_EVENT_REQUEST_LIMIT_EXCEEDED   0x05
 
#define SC_INVALID_FIRMWARE_SLOT   0x06
 
#define SC_INVALID_FIRMWARE_IMAGE   0x07
 
#define SC_INVALID_INTERRUPT_VECTOR   0x08
 
#define SC_INVALID_LOG_PAGE   0x09
 
#define SC_INVALID_FORMAT   0x0A
 
#define SC_FIRMWARE_ACTIVATION_REQUIRES_CONVENTIONAL_RESET   0x0B
 
#define SC_INVALID_QUEUE_DELETION   0x0C
 
#define SC_FEATURE_IDENTIFIER_NOT_SAVEABLE   0x0D
 
#define SC_FEATURE_NOT_CHANGEABLE   0x0E
 
#define SC_FEATURE_NOT_NAMESPACE_SPECIFIC   0x0F
 
#define SC_FIRMWARE_ACTIVATION_REQUIRES_NVM_SUBSYSTEM_RESET   0x10
 
#define SC_FIRMWARE_ACTIVATION_REQUIRES_RESET   0x11
 
#define SC_FIRMWARE_ACTIVATION_REQUIRES_MAXIMUM_TIME_VIOLATION   0x12
 
#define SC_FIRMWARE_ACTIVATION_PROHIBITED   0x13
 
#define SC_OVERLAPPING_RANGE   0x14
 
#define SC_NAMESPACE_INSUFFICIENT_CAPACITY   0x15
 
#define SC_NAMESPACE_IDENTIFIER_UNAVAILABLE   0x16
 
#define SC_NAMESPACE_ALREADY_ATTACHED   0x18
 
#define SC_NAMESPACE_IS_PRIVATE   0x19
 
#define SC_NAMESPACE_NOT_ATTACHED   0x1A
 
#define SC_THIN_PROVISIONING_NOT_SUPPORTED   0x1B
 
#define SC_CONTROLLER_LIST_INVALID   0x1C
 
#define SC_CONFLICTING_ATTRIBUTES   0x80
 
#define SC_INVALID_PROTECTION_INFORMATION   0x81
 
#define SC_ATTEMPTED_WRITE_TO_READ_ONLY_RANGE   0x82
 
#define SC_WRITE_FAULT   0x80
 
#define SC_UNRECOVERED_READ_ERROR   0x81
 
#define SC_END_TO_END_GUARD_CHECK_ERROR   0x82
 
#define SC_END_TO_END_APPLICATION_TAG_CHECK_ERROR   0x83
 
#define SC_END_TO_END_REFERENCE_TAG_CHECK_ERROR   0x84
 
#define SC_COMPARE_FAILURE   0x85
 
#define SC_ACCESS_DENIED   0x86
 
#define SC_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK   0x87
 
#define ARBITRATION   0x01
 
#define POWER_MANAGEMENT   0x02
 
#define LBA_RANGE_TYPE   0x03
 
#define TEMPERATURE_THRESHOLD   0x04
 
#define ERROR_RECOVERY   0x05
 
#define VOLATILE_WRITE_CACHE   0x06
 
#define NUMBER_OF_QUEUES   0x07
 
#define INTERRUPT_COALESCING   0x08
 
#define INTERRUPT_VECTOR_CONFIGURATION   0x09
 
#define WRITE_ATOMICITY   0x0A
 
#define ASYNCHRONOUS_EVENT_CONFIGURATION   0x0B
 
#define Power_State_Transition   0x0C
 
#define Timestamp   0x0E
 
#define SOFTWARE_PROGRESS_MARKER   0x80
 
#define NVME_TASK_IDLE   0x0
 
#define NVME_TASK_WAIT_CC_EN   0x1
 
#define NVME_TASK_RUNNING   0x2
 
#define NVME_TASK_SHUTDOWN   0x3
 
#define NVME_TASK_WAIT_RESET   0x4
 
#define NVME_TASK_RESET   0x5
 

Typedefs

typedef struct _NVME_COMMAND NVME_COMMAND
 
typedef struct _NVME_ADMIN_COMMAND NVME_ADMIN_COMMAND
 
typedef struct _ADMIN_SET_FEATURES_NUMBER_OF_QUEUES_COMPLETE ADMIN_SET_FEATURES_NUMBER_OF_QUEUES_COMPLETE
 
typedef struct _NVME_IO_COMMAND NVME_IO_COMMAND
 
typedef struct _NVME_COMPLETION NVME_COMPLETION
 The main structure of completion queue entry. More...
 
typedef struct _ADMIN_SET_FEATURES_DW10 ADMIN_SET_FEATURES_DW10
 
typedef struct _ADMIN_SET_FEATURES_NUMBER_OF_QUEUES_DW11 ADMIN_SET_FEATURES_NUMBER_OF_QUEUES_DW11
 
typedef struct _ADMIN_GET_FEATURES_DW10 ADMIN_GET_FEATURES_DW10
 
typedef struct _ADMIN_CREATE_IO_CQ_DW10 ADMIN_CREATE_IO_CQ_DW10
 
typedef struct _ADMIN_CREATE_IO_CQ_DW11 ADMIN_CREATE_IO_CQ_DW11
 
typedef struct _ADMIN_DELETE_IO_CQ_DW10 ADMIN_DELETE_IO_CQ_DW10
 
typedef struct _ADMIN_CREATE_IO_SQ_DW10 ADMIN_CREATE_IO_SQ_DW10
 
typedef struct _ADMIN_CREATE_IO_SQ_DW11 ADMIN_CREATE_IO_SQ_DW11
 
typedef struct _ADMIN_DELETE_IO_SQ_DW10 ADMIN_DELETE_IO_SQ_DW10
 
typedef struct _ADMIN_IDENTIFY_COMMAND_DW10 ADMIN_IDENTIFY_COMMAND_DW10
 
typedef struct _ADMIN_GET_LOG_PAGE_DW10 ADMIN_GET_LOG_PAGE_DW10
 
typedef struct _ADMIN_IDENTIFY_POWER_STATE_DESCRIPTOR ADMIN_IDENTIFY_POWER_STATE_DESCRIPTOR
 
typedef struct _ADMIN_IDENTIFY_CONTROLLER ADMIN_IDENTIFY_CONTROLLER
 
typedef struct _ADMIN_IDENTIFY_FORMAT_DATA ADMIN_IDENTIFY_FORMAT_DATA
 
typedef struct _ADMIN_IDENTIFY_NAMESPACE ADMIN_IDENTIFY_NAMESPACE
 
typedef struct _IO_WRITE_COMMAND_DW12 IO_WRITE_COMMAND_DW12
 
typedef struct _IO_WRITE_COMMAND_DW13 IO_WRITE_COMMAND_DW13
 
typedef struct _IO_WRITE_COMMAND_DW15 IO_WRITE_COMMAND_DW15
 
typedef struct _IO_READ_COMMAND_DW12 IO_READ_COMMAND_DW12
 
typedef struct _IO_READ_COMMAND_DW13 IO_READ_COMMAND_DW13
 
typedef struct _IO_READ_COMMAND_DW15 IO_READ_COMMAND_DW15
 
typedef struct _IO_DATASET_MANAGEMENT_COMMAND_DW10 _IO_DATASET_MANAGEMENT_COMMAND_DW10
 
typedef struct _IO_DATASET_MANAGEMENT_COMMAND_DW11 _IO_DATASET_MANAGEMENT_COMMAND_DW11
 
typedef struct _DATASET_MANAGEMENT_CONTEXT_ATTRIBUTES DATASET_MANAGEMENT_CONTEXT_ATTRIBUTES
 
typedef struct _DATASET_MANAGEMENT_RANGE DATASET_MANAGEMENT_RANGE
 
typedef struct _NVME_ADMIN_QUEUE_STATUS NVME_ADMIN_QUEUE_STATUS
 
typedef struct _NVME_IO_SQ_STATUS NVME_IO_SQ_STATUS
 
typedef struct _NVME_IO_CQ_STATUS NVME_IO_CQ_STATUS
 
typedef struct _NVME_STATUS NVME_CONTEXT
 

Macro Definition Documentation

◆ ADMIN_ABORT

#define ADMIN_ABORT   0x08

Definition at line 71 of file nvme.h.

◆ ADMIN_ASYNCHRONOUS_EVENT_REQUEST

#define ADMIN_ASYNCHRONOUS_EVENT_REQUEST   0x0C

Definition at line 74 of file nvme.h.

◆ ADMIN_CMD_DRAM_DATA_BUFFER

#define ADMIN_CMD_DRAM_DATA_BUFFER   0x00200000

Definition at line 57 of file nvme.h.

◆ ADMIN_CREATE_IO_CQ

#define ADMIN_CREATE_IO_CQ   0x05

Definition at line 69 of file nvme.h.

◆ ADMIN_CREATE_IO_SQ

#define ADMIN_CREATE_IO_SQ   0x01

Definition at line 66 of file nvme.h.

◆ ADMIN_DELETE_IO_CQ

#define ADMIN_DELETE_IO_CQ   0x04

Definition at line 68 of file nvme.h.

◆ ADMIN_DELETE_IO_SQ

#define ADMIN_DELETE_IO_SQ   0x00

Definition at line 65 of file nvme.h.

◆ ADMIN_DOORBELL_BUFFER_CONFIG

#define ADMIN_DOORBELL_BUFFER_CONFIG   0x7C

Definition at line 78 of file nvme.h.

◆ ADMIN_FIRMWARE_ACTIVATE

#define ADMIN_FIRMWARE_ACTIVATE   0x10

Definition at line 75 of file nvme.h.

◆ ADMIN_FIRMWARE_IMAGE_DOWNLOAD

#define ADMIN_FIRMWARE_IMAGE_DOWNLOAD   0x11

Definition at line 76 of file nvme.h.

◆ ADMIN_FORMAT_NVM

#define ADMIN_FORMAT_NVM   0x80

Definition at line 77 of file nvme.h.

◆ ADMIN_GET_FEATURES

#define ADMIN_GET_FEATURES   0x0A

Definition at line 73 of file nvme.h.

◆ ADMIN_GET_LOG_PAGE

#define ADMIN_GET_LOG_PAGE   0x02

Definition at line 67 of file nvme.h.

◆ ADMIN_IDENTIFY

#define ADMIN_IDENTIFY   0x06

Definition at line 70 of file nvme.h.

◆ ADMIN_SECURITY_RECEIVE

#define ADMIN_SECURITY_RECEIVE   0x82

Definition at line 80 of file nvme.h.

◆ ADMIN_SECURITY_SEND

#define ADMIN_SECURITY_SEND   0x81

Definition at line 79 of file nvme.h.

◆ ADMIN_SET_FEATURES

#define ADMIN_SET_FEATURES   0x09

Definition at line 72 of file nvme.h.

◆ ARBITRATION

#define ARBITRATION   0x01

Definition at line 179 of file nvme.h.

◆ ASYNCHRONOUS_EVENT_CONFIGURATION

#define ASYNCHRONOUS_EVENT_CONFIGURATION   0x0B

Definition at line 189 of file nvme.h.

◆ ERROR_RECOVERY

#define ERROR_RECOVERY   0x05

Definition at line 183 of file nvme.h.

◆ INTERRUPT_COALESCING

#define INTERRUPT_COALESCING   0x08

Definition at line 186 of file nvme.h.

◆ INTERRUPT_VECTOR_CONFIGURATION

#define INTERRUPT_VECTOR_CONFIGURATION   0x09

Definition at line 187 of file nvme.h.

◆ IO_NVM_COMPARE

#define IO_NVM_COMPARE   0x05 /* Not acceptable yet */

Definition at line 87 of file nvme.h.

◆ IO_NVM_DATASET_MANAGEMENT

#define IO_NVM_DATASET_MANAGEMENT   0x09 /* Not acceptable yet */

Definition at line 88 of file nvme.h.

◆ IO_NVM_FLUSH

#define IO_NVM_FLUSH   0x00

Definition at line 83 of file nvme.h.

◆ IO_NVM_READ

#define IO_NVM_READ   0x02

Definition at line 85 of file nvme.h.

◆ IO_NVM_WRITE

#define IO_NVM_WRITE   0x01

Definition at line 84 of file nvme.h.

◆ IO_NVM_WRITE_UNCORRECTABLE

#define IO_NVM_WRITE_UNCORRECTABLE   0x04 /* Not acceptable yet */

Definition at line 86 of file nvme.h.

◆ LBA_RANGE_TYPE

#define LBA_RANGE_TYPE   0x03

Definition at line 181 of file nvme.h.

◆ MAX_NUM_OF_IO_CQ

#define MAX_NUM_OF_IO_CQ   8

Definition at line 55 of file nvme.h.

◆ MAX_NUM_OF_IO_SQ

#define MAX_NUM_OF_IO_SQ   8

Definition at line 54 of file nvme.h.

◆ MAX_NUM_OF_NLB

#define MAX_NUM_OF_NLB   (512 * 1024 / 4096)

Definition at line 62 of file nvme.h.

◆ NUMBER_OF_QUEUES

#define NUMBER_OF_QUEUES   0x07

Definition at line 185 of file nvme.h.

◆ NVME_TASK_IDLE

#define NVME_TASK_IDLE   0x0

Definition at line 194 of file nvme.h.

◆ NVME_TASK_RESET

#define NVME_TASK_RESET   0x5

Definition at line 199 of file nvme.h.

◆ NVME_TASK_RUNNING

#define NVME_TASK_RUNNING   0x2

Definition at line 196 of file nvme.h.

◆ NVME_TASK_SHUTDOWN

#define NVME_TASK_SHUTDOWN   0x3

Definition at line 197 of file nvme.h.

◆ NVME_TASK_WAIT_CC_EN

#define NVME_TASK_WAIT_CC_EN   0x1

Definition at line 195 of file nvme.h.

◆ NVME_TASK_WAIT_RESET

#define NVME_TASK_WAIT_RESET   0x4

Definition at line 198 of file nvme.h.

◆ POWER_MANAGEMENT

#define POWER_MANAGEMENT   0x02

Definition at line 180 of file nvme.h.

◆ Power_State_Transition

#define Power_State_Transition   0x0C

Definition at line 190 of file nvme.h.

◆ SC_ABORT_COMMAND_LIMIT_EXCEEDED

#define SC_ABORT_COMMAND_LIMIT_EXCEEDED   0x03

Definition at line 137 of file nvme.h.

◆ SC_ACCESS_DENIED

#define SC_ACCESS_DENIED   0x86

Definition at line 174 of file nvme.h.

◆ SC_ASYNCHRONOUS_EVENT_REQUEST_LIMIT_EXCEEDED

#define SC_ASYNCHRONOUS_EVENT_REQUEST_LIMIT_EXCEEDED   0x05

Definition at line 138 of file nvme.h.

◆ SC_ATOMIC_WRITE_UNIT_EXCEEDED

#define SC_ATOMIC_WRITE_UNIT_EXCEEDED   0x14

Definition at line 117 of file nvme.h.

◆ SC_ATTEMPTED_WRITE_TO_READ_ONLY_RANGE

#define SC_ATTEMPTED_WRITE_TO_READ_ONLY_RANGE   0x82

Definition at line 165 of file nvme.h.

◆ SC_CAPACITY_EXCEEDED

#define SC_CAPACITY_EXCEEDED   0x81

Definition at line 126 of file nvme.h.

◆ SC_COMMAND_ABORT_REQUESTED

#define SC_COMMAND_ABORT_REQUESTED   0x07

Definition at line 104 of file nvme.h.

◆ SC_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND

#define SC_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND   0x09

Definition at line 106 of file nvme.h.

◆ SC_COMMAND_ABORTED_DUE_TO_MISSING_FUSED_COMMAND

#define SC_COMMAND_ABORTED_DUE_TO_MISSING_FUSED_COMMAND   0x0A

Definition at line 107 of file nvme.h.

◆ SC_COMMAND_ABORTED_DUE_TO_SQ_DELETION

#define SC_COMMAND_ABORTED_DUE_TO_SQ_DELETION   0x08

Definition at line 105 of file nvme.h.

◆ SC_COMMAND_ID_CONFLICT

#define SC_COMMAND_ID_CONFLICT   0x03

Definition at line 100 of file nvme.h.

◆ SC_COMMAND_SEQUENCE_ERROR

#define SC_COMMAND_SEQUENCE_ERROR   0x0C

Definition at line 109 of file nvme.h.

◆ SC_COMMANDS_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION

#define SC_COMMANDS_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION   0x05

Definition at line 102 of file nvme.h.

◆ SC_COMPARE_FAILURE

#define SC_COMPARE_FAILURE   0x85

Definition at line 173 of file nvme.h.

◆ SC_COMPLETION_QUEUE_INVALID

#define SC_COMPLETION_QUEUE_INVALID   0x00

Definition at line 132 of file nvme.h.

◆ SC_CONFLICTING_ATTRIBUTES

#define SC_CONFLICTING_ATTRIBUTES   0x80

Definition at line 163 of file nvme.h.

◆ SC_CONTROLLER_LIST_INVALID

#define SC_CONTROLLER_LIST_INVALID   0x1C

Definition at line 160 of file nvme.h.

◆ SC_DATA_SGL_LENGTH_INVALID

#define SC_DATA_SGL_LENGTH_INVALID   0x0F

Definition at line 112 of file nvme.h.

◆ SC_DATA_TRANSFER_ERROR

#define SC_DATA_TRANSFER_ERROR   0x04

Definition at line 101 of file nvme.h.

◆ SC_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK

#define SC_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK   0x87

Definition at line 175 of file nvme.h.

◆ SC_END_TO_END_APPLICATION_TAG_CHECK_ERROR

#define SC_END_TO_END_APPLICATION_TAG_CHECK_ERROR   0x83

Definition at line 171 of file nvme.h.

◆ SC_END_TO_END_GUARD_CHECK_ERROR

#define SC_END_TO_END_GUARD_CHECK_ERROR   0x82

Definition at line 170 of file nvme.h.

◆ SC_END_TO_END_REFERENCE_TAG_CHECK_ERROR

#define SC_END_TO_END_REFERENCE_TAG_CHECK_ERROR   0x84

Definition at line 172 of file nvme.h.

◆ SC_FEATURE_IDENTIFIER_NOT_SAVEABLE

#define SC_FEATURE_IDENTIFIER_NOT_SAVEABLE   0x0D

Definition at line 146 of file nvme.h.

◆ SC_FEATURE_NOT_CHANGEABLE

#define SC_FEATURE_NOT_CHANGEABLE   0x0E

Definition at line 147 of file nvme.h.

◆ SC_FEATURE_NOT_NAMESPACE_SPECIFIC

#define SC_FEATURE_NOT_NAMESPACE_SPECIFIC   0x0F

Definition at line 148 of file nvme.h.

◆ SC_FIRMWARE_ACTIVATION_PROHIBITED

#define SC_FIRMWARE_ACTIVATION_PROHIBITED   0x13

Definition at line 152 of file nvme.h.

◆ SC_FIRMWARE_ACTIVATION_REQUIRES_CONVENTIONAL_RESET

#define SC_FIRMWARE_ACTIVATION_REQUIRES_CONVENTIONAL_RESET   0x0B

Definition at line 144 of file nvme.h.

◆ SC_FIRMWARE_ACTIVATION_REQUIRES_MAXIMUM_TIME_VIOLATION

#define SC_FIRMWARE_ACTIVATION_REQUIRES_MAXIMUM_TIME_VIOLATION   0x12

Definition at line 151 of file nvme.h.

◆ SC_FIRMWARE_ACTIVATION_REQUIRES_NVM_SUBSYSTEM_RESET

#define SC_FIRMWARE_ACTIVATION_REQUIRES_NVM_SUBSYSTEM_RESET   0x10

Definition at line 149 of file nvme.h.

◆ SC_FIRMWARE_ACTIVATION_REQUIRES_RESET

#define SC_FIRMWARE_ACTIVATION_REQUIRES_RESET   0x11

Definition at line 150 of file nvme.h.

◆ SC_FORMAT_IN_PROGRESS

#define SC_FORMAT_IN_PROGRESS   0x84

Definition at line 129 of file nvme.h.

◆ SC_HOST_IDENTIFIER_INCONSISTENT_FORMAT

#define SC_HOST_IDENTIFIER_INCONSISTENT_FORMAT   0x18

Definition at line 120 of file nvme.h.

◆ SC_INTERNAL_DEVICE_ERROR

#define SC_INTERNAL_DEVICE_ERROR   0x06

Definition at line 103 of file nvme.h.

◆ SC_INVALID_COMMAND_OPCODE

#define SC_INVALID_COMMAND_OPCODE   0x01

Definition at line 98 of file nvme.h.

◆ SC_INVALID_FIELD_IN_COMMAND

#define SC_INVALID_FIELD_IN_COMMAND   0x02

Definition at line 99 of file nvme.h.

◆ SC_INVALID_FIRMWARE_IMAGE

#define SC_INVALID_FIRMWARE_IMAGE   0x07

Definition at line 140 of file nvme.h.

◆ SC_INVALID_FIRMWARE_SLOT

#define SC_INVALID_FIRMWARE_SLOT   0x06

Definition at line 139 of file nvme.h.

◆ SC_INVALID_FORMAT

#define SC_INVALID_FORMAT   0x0A

Definition at line 143 of file nvme.h.

◆ SC_INVALID_INTERRUPT_VECTOR

#define SC_INVALID_INTERRUPT_VECTOR   0x08

Definition at line 141 of file nvme.h.

◆ SC_INVALID_LOG_PAGE

#define SC_INVALID_LOG_PAGE   0x09

Definition at line 142 of file nvme.h.

◆ SC_INVALID_NAMESPACE_OR_FORMAT

#define SC_INVALID_NAMESPACE_OR_FORMAT   0x0B

Definition at line 108 of file nvme.h.

◆ SC_INVALID_NUMBER_OF_SGL_DESCRIPTORS

#define SC_INVALID_NUMBER_OF_SGL_DESCRIPTORS   0x0E

Definition at line 111 of file nvme.h.

◆ SC_INVALID_PROTECTION_INFORMATION

#define SC_INVALID_PROTECTION_INFORMATION   0x81

Definition at line 164 of file nvme.h.

◆ SC_INVALID_QUEUE_DELETION

#define SC_INVALID_QUEUE_DELETION   0x0C

Definition at line 145 of file nvme.h.

◆ SC_INVALID_QUEUE_IDENTIFIER

#define SC_INVALID_QUEUE_IDENTIFIER    0x01

Definition at line 133 of file nvme.h.

◆ SC_INVALID_QUEUE_SIZE

#define SC_INVALID_QUEUE_SIZE   0x02

Definition at line 136 of file nvme.h.

◆ SC_INVALID_SGL_SEGMENT_DESCRIPTOR

#define SC_INVALID_SGL_SEGMENT_DESCRIPTOR   0x0D

Definition at line 110 of file nvme.h.

◆ SC_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER

#define SC_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER   0x12

Definition at line 115 of file nvme.h.

◆ SC_KEEP_ALIVE_TIMEOUT_EXPIRED

#define SC_KEEP_ALIVE_TIMEOUT_EXPIRED   0x19

Definition at line 121 of file nvme.h.

◆ SC_KEEP_ALIVE_TIMEOUT_INVALID

#define SC_KEEP_ALIVE_TIMEOUT_INVALID   0x1A

Definition at line 122 of file nvme.h.

◆ SC_LBA_OUT_OF_RANGE

#define SC_LBA_OUT_OF_RANGE   0x80

Definition at line 125 of file nvme.h.

◆ SC_METADATA_SGL_LENGTH_INVALID

#define SC_METADATA_SGL_LENGTH_INVALID   0x10

Definition at line 113 of file nvme.h.

◆ SC_NAMESPACE_ALREADY_ATTACHED

#define SC_NAMESPACE_ALREADY_ATTACHED   0x18

Definition at line 156 of file nvme.h.

◆ SC_NAMESPACE_IDENTIFIER_UNAVAILABLE

#define SC_NAMESPACE_IDENTIFIER_UNAVAILABLE   0x16

Definition at line 155 of file nvme.h.

◆ SC_NAMESPACE_INSUFFICIENT_CAPACITY

#define SC_NAMESPACE_INSUFFICIENT_CAPACITY   0x15

Definition at line 154 of file nvme.h.

◆ SC_NAMESPACE_IS_PRIVATE

#define SC_NAMESPACE_IS_PRIVATE   0x19

Definition at line 157 of file nvme.h.

◆ SC_NAMESPACE_NOT_ATTACHED

#define SC_NAMESPACE_NOT_ATTACHED   0x1A

Definition at line 158 of file nvme.h.

◆ SC_NAMESPACE_NOT_READY

#define SC_NAMESPACE_NOT_READY   0x82

Definition at line 127 of file nvme.h.

◆ SC_OVERLAPPING_RANGE

#define SC_OVERLAPPING_RANGE   0x14

Definition at line 153 of file nvme.h.

◆ SC_PRP_OFFSET_INVALID

#define SC_PRP_OFFSET_INVALID   0x13

Definition at line 116 of file nvme.h.

◆ SC_RESERVATION_CONFLICT

#define SC_RESERVATION_CONFLICT   0x83

Definition at line 128 of file nvme.h.

◆ SC_SGL_DESCRIPTOR_TYPE_INVALID

#define SC_SGL_DESCRIPTOR_TYPE_INVALID   0x11

Definition at line 114 of file nvme.h.

◆ SC_SGL_OFFSET_INVALID

#define SC_SGL_OFFSET_INVALID   0x16

Definition at line 118 of file nvme.h.

◆ SC_SGL_SUB_TYPE_INVALID

#define SC_SGL_SUB_TYPE_INVALID   0x17

Definition at line 119 of file nvme.h.

◆ SC_SUCCESSFUL_COMPLETION

#define SC_SUCCESSFUL_COMPLETION   0x00

Definition at line 97 of file nvme.h.

◆ SC_THIN_PROVISIONING_NOT_SUPPORTED

#define SC_THIN_PROVISIONING_NOT_SUPPORTED   0x1B

Definition at line 159 of file nvme.h.

◆ SC_UNRECOVERED_READ_ERROR

#define SC_UNRECOVERED_READ_ERROR   0x81

Definition at line 169 of file nvme.h.

◆ SC_WRITE_FAULT

#define SC_WRITE_FAULT   0x80

Definition at line 168 of file nvme.h.

◆ SCT_COMMAND_SPECIFIC_STATUS

#define SCT_COMMAND_SPECIFIC_STATUS   1

Definition at line 92 of file nvme.h.

◆ SCT_GENERIC_COMMAND_STATUS

#define SCT_GENERIC_COMMAND_STATUS   0

Definition at line 91 of file nvme.h.

◆ SCT_MEDIA_AND_DATA_INTEGRITY_ERRORS

#define SCT_MEDIA_AND_DATA_INTEGRITY_ERRORS   2

Definition at line 93 of file nvme.h.

◆ SCT_VENDOR_SPECIFIC

#define SCT_VENDOR_SPECIFIC   7

Definition at line 94 of file nvme.h.

◆ SOFTWARE_PROGRESS_MARKER

#define SOFTWARE_PROGRESS_MARKER   0x80

Definition at line 192 of file nvme.h.

◆ STORAGE_CAPACITY_H

#define STORAGE_CAPACITY_H   0x00000000

Definition at line 60 of file nvme.h.

◆ STORAGE_CAPACITY_L

#define STORAGE_CAPACITY_L   0x00000000

Definition at line 59 of file nvme.h.

◆ TEMPERATURE_THRESHOLD

#define TEMPERATURE_THRESHOLD   0x04

Definition at line 182 of file nvme.h.

◆ Timestamp

#define Timestamp   0x0E

Definition at line 191 of file nvme.h.

◆ VOLATILE_WRITE_CACHE

#define VOLATILE_WRITE_CACHE   0x06

Definition at line 184 of file nvme.h.

◆ WRITE_ATOMICITY

#define WRITE_ATOMICITY   0x0A

Definition at line 188 of file nvme.h.

Typedef Documentation

◆ _IO_DATASET_MANAGEMENT_COMMAND_DW10

◆ _IO_DATASET_MANAGEMENT_COMMAND_DW11

◆ ADMIN_CREATE_IO_CQ_DW10

◆ ADMIN_CREATE_IO_CQ_DW11

◆ ADMIN_CREATE_IO_SQ_DW10

◆ ADMIN_CREATE_IO_SQ_DW11

◆ ADMIN_DELETE_IO_CQ_DW10

◆ ADMIN_DELETE_IO_SQ_DW10

◆ ADMIN_GET_FEATURES_DW10

◆ ADMIN_GET_LOG_PAGE_DW10

◆ ADMIN_IDENTIFY_COMMAND_DW10

◆ ADMIN_IDENTIFY_CONTROLLER

◆ ADMIN_IDENTIFY_FORMAT_DATA

◆ ADMIN_IDENTIFY_NAMESPACE

◆ ADMIN_IDENTIFY_POWER_STATE_DESCRIPTOR

◆ ADMIN_SET_FEATURES_DW10

◆ ADMIN_SET_FEATURES_NUMBER_OF_QUEUES_COMPLETE

◆ ADMIN_SET_FEATURES_NUMBER_OF_QUEUES_DW11

◆ DATASET_MANAGEMENT_CONTEXT_ATTRIBUTES

◆ DATASET_MANAGEMENT_RANGE

◆ IO_READ_COMMAND_DW12

◆ IO_READ_COMMAND_DW13

◆ IO_READ_COMMAND_DW15

◆ IO_WRITE_COMMAND_DW12

For read and write commands, CDW[12] was used for:

Todo:
  • bit[00,15]: Num of Logical Blocks to read or write
  • bit[16,19]: Reserved
  • bit[20,23]: Directive Type for write command.
  • bit[24]: STC
  • bit[25]: Reserved
  • bit[26,29]: Protection Info
  • bit[30]: Force Unit Access
  • bit[31]: Limited Retry

◆ IO_WRITE_COMMAND_DW13

◆ IO_WRITE_COMMAND_DW15

◆ NVME_ADMIN_COMMAND

The structure of a admin queue entry for admin commands, has the same structure as I/O command. Check the NVME_COMMAND and command specified structs for detailed info.

◆ NVME_ADMIN_QUEUE_STATUS

◆ NVME_COMMAND

typedef struct _NVME_COMMAND NVME_COMMAND

The main structure of NVMe Commands.

◆ NVME_COMPLETION

The main structure of completion queue entry.

A completion queue entry consisted of 4 DWORDs (16B)

Warning
but here only 2DW?

◆ NVME_CONTEXT

typedef struct _NVME_STATUS NVME_CONTEXT

◆ NVME_IO_COMMAND

The structure of a I/O queue entry for I/O commands, has the same structure as admin command. Check the NVME_COMMAND and command specified structs for detailed info.

◆ NVME_IO_CQ_STATUS

◆ NVME_IO_SQ_STATUS