NVME_CONTROLLER_MEMORY_BUFFER_SIZE union (nvme.h)

Defines the size of the optional Controller Memory Buffer register, and is used in the CMBSZ field of the NVME_CONTROLLER_REGISTERS structure.

If the controller does not support the Controller Memory Buffer feature, the CMBSZ field is cleared to 0h.

The location of the Controller Memory Buffer is specified in the CMBLOC field of NVME_CONTROLLER_REGISTERS.

Syntax

typedef union {
  struct {
    ULONG SQS : 1;
    ULONG CQS : 1;
    ULONG LISTS : 1;
    ULONG RDS : 1;
    ULONG WDS : 1;
    ULONG Reserved : 3;
    ULONG SZU : 4;
    ULONG SZ : 20;
  } DUMMYSTRUCTNAME;
  ULONG  AsUlong;
} NVME_CONTROLLER_MEMORY_BUFFER_SIZE, *PNVME_CONTROLLER_MEMORY_BUFFER_SIZE;

Members

DUMMYSTRUCTNAME

DUMMYSTRUCTNAME.SQS

Indicates whether the controller supports Admin and I/O Submission Queues in the Controller Memory Buffer.

When this value is set to 1, the controller supports Admin and I/O Submission Queues in the Controller Memory Buffer. When this value is cleared to 0, all Submission Queues will be placed in host memory.

DUMMYSTRUCTNAME.CQS

Indicates whether the controller supports Admin and I/O Completion Queues in the Controller Memory Buffer.

When this value is set to 1, the controller supports Admin and I/O Completion Queues in the Controller Memory Buffer. When this value is cleared to 0, all Completion Queues will be placed in host memory.

DUMMYSTRUCTNAME.LISTS

Indicates whether the controller supports Physical Region Page (PRP) and Scatter Gather Lists (SGL) in the Controller Memory Buffer.

When this value is set to 1, the controller supports PRP Lists in the Controller Memory Buffer. If the value is set to 1 and SGLs are supported by the controller, the controller supports SGLs in the Controller Memory Buffer. If this bit is set to 1, the Submission Queue Support (SQS) field will be set to 1.

When this value is cleared to 0, all PRP Lists and SGLs will be placed in host memory.

DUMMYSTRUCTNAME.RDS

Indicates whether the controller supports data and metadata in the Controller Memory Buffer for commands, such as the Read command, that transfer data from the controller to the host.

When this value is set to 1, the controller supports data and metadata in the Controller Memory Buffer for commands that transfer data from the controller to the host.

When this value is cleared to 0, all data and metadata for commands that transfer data from the controller to the host will be transferred to host memory.

DUMMYSTRUCTNAME.WDS

Indicates whether the controller supports data and metadata in the Controller Memory Buffer for commands, such as the Write command, that transfer data from the host to the controller.

When this value is set to 1, the controller supports data and metadata in the Controller Memory Buffer for commands that transfer data from the host to the controller.

When this value is cleared to 0, all data and metadata for commands that transfer data from the host to the controller will be transferred from host memory.

DUMMYSTRUCTNAME.Reserved

DUMMYSTRUCTNAME.SZU

A NVME_CMBSZ_SIZE_UNITS value that indicates the granularity of the Size SZ field.

DUMMYSTRUCTNAME.SZ

Indicates the size of the Controller Memory Buffer available for use by the host. The size is in multiples of the Size Unit SZU.

If the Offset (the OFST field in the NVME_CONTROLLER_MEMORY_BUFFER_LOCATION structure) + Size (SZ) exceeds the length of the specified Base Address Register (the BIR field in the NVME_CONTROLLER_MEMORY_BUFFER_LOCATION structure), the size available to the host is limited by the length of the Base Address Register.

AsUlong

Requirements

Requirement Value
Minimum supported client Windows 10
Header nvme.h

See also