NVME_CONTROLLER_CAPABILITIES union (nvme.h)
Contains read only values that specify the basic capabilities of the controller to host software.
This structure is used in the Controller Capabilities (CAP) field of the NVME_CONTROLLER_REGISTERS structure.
Syntax
typedef union {
struct {
ULONGLONG MQES : 16;
ULONGLONG CQR : 1;
ULONGLONG AMS_WeightedRoundRobinWithUrgent : 1;
ULONGLONG AMS_VendorSpecific : 1;
ULONGLONG Reserved0 : 5;
ULONGLONG TO : 8;
ULONGLONG DSTRD : 4;
ULONGLONG NSSRS : 1;
ULONGLONG CSS_NVM : 1;
ULONGLONG CSS_Reserved0 : 1;
ULONGLONG CSS_Reserved1 : 1;
ULONGLONG CSS_Reserved2 : 1;
ULONGLONG CSS_Reserved3 : 1;
ULONGLONG CSS_Reserved4 : 1;
ULONGLONG CSS_MultipleIo : 1;
ULONGLONG CSS_AdminOnly : 1;
ULONGLONG Reserved2 : 3;
ULONGLONG MPSMIN : 4;
ULONGLONG MPSMAX : 4;
ULONGLONG Reserved3 : 8;
} DUMMYSTRUCTNAME;
ULONGLONG AsUlonglong;
} NVME_CONTROLLER_CAPABILITIES, *PNVME_CONTROLLER_CAPABILITIES;
Members
DUMMYSTRUCTNAME
DUMMYSTRUCTNAME.MQES
Indicates the maximum individual queue size that the controller supports.
This value applies to each of the I/O Submission Queues and I/O Completion Queues that the host software creates.
This is a 0’s based value. The minimum value is 1h
, indicating two queue entries.
DUMMYSTRUCTNAME.CQR
Indicates whether I/O Submission Queues and I/O Completion Queues are required by the controller to be physically contiguous.
When this field is set to 1
, the controller requires that I/O Submission Queues and I/O Completion Queues are physically contiguous.
When this field is cleared to 0
, the controller supports I/O Submission Queues and I/O Completion Queues that are not physically contiguous.
When this field is set to 1
, the Physically Contiguous bit (the PC field) in the Create I/O Submission Queue and Create I/O Completion Queue commands is set to 1
.
DUMMYSTRUCTNAME.AMS_WeightedRoundRobinWithUrgent
Indicates whether the Weighted Round Robin with Urgent Priority Class arbitration mechanism is supported by the controller.
When this field is set to 1
, the Weighted Round Robin with Urgent Priority Class arbitration mechanism is supported.
This AMS_WeightedRoundRobinWithUrgent and AMS_VendorSpecific fields indicate the optional arbitration mechanisms supported by the controller. The round robin arbitration mechanism is not listed since all controllers must support this arbitration mechanism.
DUMMYSTRUCTNAME.AMS_VendorSpecific
Indicates whether the Vendor Specific arbitration mechanism is supported by the controller.
When this field is set to 1
, the Vendor Specific arbitration mechanism is supported.
DUMMYSTRUCTNAME.Reserved0
A reserved field (bits 19 to 23).
DUMMYSTRUCTNAME.TO
Indicates the worst case time that the host software will wait for the Ready (RDY) value in Controller Status to transition from:
0
to1
after the EN value in NVME_CONTROLLER_CONFIGURATION transitions from0
to1
; or1
to0
after the EN value in NVME_CONTROLLER_CONFIGURATION transitions from1
to0
.
This worst case time may be experienced after events such as an abrupt shutdown or activation of a new firmware image. Typical times are expected to be much shorter.
The value of this field is in 500 millisecond units.
DUMMYSTRUCTNAME.DSTRD
Indicates the stride between doorbell registers.
Each Submission Queue and Completion Queue Doorbell register is 32-bits in size. The stride is specified as (2 ^ (2 + DSTRD))
in bytes.
A value of 0h
indicates a stride of 4 bytes, where the doorbell registers are packed without reserved space between each register.
DUMMYSTRUCTNAME.NSSRS
Indicates whether the controller supports the NVM Subsystem Reset feature defined in the NVME_NVM_SUBSYSTEM_RESET structure.
When this field is set to 1
, the controller supports the NVM Subsystem Reset feature.
hen this field is cleared to 0
, the controller does not support the NVM Subsystem Reset feature.
DUMMYSTRUCTNAME.CSS_NVM
This field indicates whether the NVM Command Set is supported by the controller. A minimum of one command set must be supported.
When this field is set to 1
, the NVM Command Set is supported.
The CSS_Reserved0 through CSS_Reserved6 fields are reserved for other I/O Command Sets, if the value of one of these fields is set to 1
, then the corresponding I/O Command Set is supported.
DUMMYSTRUCTNAME.CSS_Reserved0
DUMMYSTRUCTNAME.CSS_Reserved1
DUMMYSTRUCTNAME.CSS_Reserved2
DUMMYSTRUCTNAME.CSS_Reserved3
DUMMYSTRUCTNAME.CSS_Reserved4
DUMMYSTRUCTNAME.CSS_MultipleIo
DUMMYSTRUCTNAME.CSS_AdminOnly
DUMMYSTRUCTNAME.Reserved2
DUMMYSTRUCTNAME.MPSMIN
Indicates the minimum host memory page size that the controller supports.
The minimum memory page size is (2 ^ (12 + MPSMIN))
.
The host will not configure a memory page size in the MPS field of NVME_CONTROLLER_CONFIGURATION that is smaller than this value.
DUMMYSTRUCTNAME.MPSMAX
Indicates the maximum host memory page size that the controller supports.
The maximum memory page size is (2 ^ (12 + MPSMAX))
.
The host will not configure a memory page size in the MPS field of NVME_CONTROLLER_CONFIGURATION that is larger than this value.
DUMMYSTRUCTNAME.Reserved3
AsUlonglong
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 10 |
Header | nvme.h |