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:

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

See also