Compartir a través de


estructura NVME_CONTROLLER_REGISTERS (nvme.h)

Especifica el mapa de registro para el controlador.

Sintaxis

typedef struct {
  NVME_CONTROLLER_CAPABILITIES             CAP;
  NVME_VERSION                             VS;
  ULONG                                    INTMS;
  ULONG                                    INTMC;
  NVME_CONTROLLER_CONFIGURATION            CC;
  ULONG                                    Reserved0;
  NVME_CONTROLLER_STATUS                   CSTS;
  NVME_NVM_SUBSYSTEM_RESET                 NSSR;
  NVME_ADMIN_QUEUE_ATTRIBUTES              AQA;
  NVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS ASQ;
  NVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS ACQ;
  NVME_CONTROLLER_MEMORY_BUFFER_LOCATION   CMBLOC;
  NVME_CONTROLLER_MEMORY_BUFFER_SIZE       CMBSZ;
  ULONG                                    Reserved2[944];
  ULONG                                    Reserved3[64];
  ULONG                                    Doorbells[0];
} NVME_CONTROLLER_REGISTERS, *PNVME_CONTROLLER_REGISTERS;

Miembros

CAP

Estructura NVME_CONTROLLER_CAPABILITIES que indica las funcionalidades básicas del controlador para hospedar software.

Las funcionalidades del controlador cap registro comienzan en desplazamiento 00h.

VS

estructura NVME_VERSION que indica la versión principal y secundaria de la especificación NVM Express que admite la implementación del controlador. Las versiones válidas de la especificación son: 1.0, 1.1 y 1.2.

La versión registro de VS comienza en Offset 08h.

INTMS

Indica si se enmascara un vector de interrupción para generar una interrupción o notificar una interrupción pendiente en la estructura de funcionalidad msi.

Cuando se escribe un valor de 1 en un bit en el campo, el vector de interrupción correspondiente se enmascara al generar una interrupción o notificar una interrupción pendiente en la estructura de funcionalidad msi. Escribir un 0 en un bit no tiene ningún efecto.

Cuando se lee, este campo devuelve el valor de máscara de interrupción actual dentro del controlador (no el valor de este registro). Si un bit tiene un valor de un 1, se enmascara el vector de interrupción correspondiente. Si un bit tiene un valor de 0, el vector de interrupción correspondiente no se enmascara.

Este registro se usa para enmascarar interrupciones al usar interrupciones basadas en patillas, MSI de mensaje único o msi de varios mensajes. Al usar MSI-X, la tabla de máscaras de interrupción definida como parte de MSI-X debe usarse para enmascarar interrupciones. El software host no debe acceder a este registro cuando está configurado para MSI-X; cualquier acceso cuando se configura para MSI-X no está definido.

El conjunto de máscaras de interrupción registro INTMS comienza en Offset 0Ch.

INTMC

Indica si se enmascara un vector de interrupción.

Cuando se escribe un valor de 1 en un bit en el campo, el vector de interrupción correspondiente se desenmascara. Escribir un 0 en un bit no tiene ningún efecto.

Cuando se lee, este campo devuelve el valor de máscara de interrupción actual dentro del controlador (no el valor de este registro). Si un bit tiene un valor de un 1, se enmascara el vector de interrupción correspondiente, Si un bit tiene un valor de 0, el vector de interrupción correspondiente no se enmascara.

Este registro se usa para desenmascarar las interrupciones cuando se usan interrupciones basadas en patillas, MSI de mensaje único o msi de varios mensajes. Al usar MSI-X, la tabla de máscaras de interrupción definida como parte de MSI-X debe usarse para desenmascarar las interrupciones. El software host no debe acceder a este registro cuando está configurado para MSI-X; cualquier acceso cuando se configura para MSI-X no está definido.

La máscara de interrupción Clear registro INTMS comienza en Offset 10h.

CC

Estructura NVME_CONTROLLER_CONFIGURATION que contiene valores de configuración de lectura y escritura para el controlador.

El software host debe establecer los campos Mecanismo de arbitraje (AMS), Tamaño de página de memoria (MPS) y Conjunto de comandos (CSS) en NVME_CONTROLLER_CONFIGURATION a valores válidos antes de habilitar el controlador estableciendo el campo Habilitar (EN) en 1.

La configuración del controlador registro cc comienza en desplazamiento 14h.

Reserved0

El desplazamiento 18h está reservado.

Todos los registros reservados y todos los bits reservados dentro de los registros son de solo lectura y devuelven 0h cuando se leen, sin embargo, el software no debe confiar en 0h que se devuelvan.

CSTS

Estructura NVME_CONTROLLER_STATUS que indica el estado del controlador.

El estado del controlador registro de CSTS comienza en Offset 1Ch.

NSSR

Estructura NVME_NVM_SUBSYSTEM_RESET que proporciona software host con la capacidad de iniciar un restablecimiento del subsistema NVM.

La compatibilidad con este registro opcional se indica mediante el estado del campo Compatible con el restablecimiento del subsistema NVM (NSSRS) en el Funcionalidades del controlador. Si no se admite el registro, se reserva el intervalo de direcciones ocupado por el registro.

El registro de restablecimiento del subsistema NVM (opcional) comienza en Desplazamiento 20h.

AQA

Estructura NVME_ADMIN_QUEUE_ATTRIBUTES que especifica los atributos de la cola de administración para la cola de envío de administración y la cola de finalización del administrador.

Los atributos de cola de administración registro de AQA comienzan en desplazamiento 24h.

ASQ

Estructura NVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS que especifica la dirección de memoria base de la cola de envío de administración.

El registro de dirección base de la cola de envío de administración comienza en Desplazamiento 28h.

ACQ

Estructura NVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS que especifica la dirección de memoria base de la cola de finalización del administrador.

El registro de dirección base de cola de finalización de administrador comienza en Desplazamiento 30h.

CMBLOC

Estructura NVME_CONTROLLER_MEMORY_BUFFER_LOCATION que especifica la ubicación del búfer de memoria del controlador.

Si el valor de CMBSZ es 0, este registro se reserva.

El registro de ubicación del búfer de memoria del controlador (opcional) comienza en desplazamiento 38h.

CMBSZ

Estructura NVME_CONTROLLER_MEMORY_BUFFER_SIZE que especifica el tamaño del búfer de memoria del controlador.

Si el controlador no admite la característica Búfer de memoria del controlador, este registro se borra para 0h.

El registro de tamaño del búfer de memoria del controlador (opcional) comienza en Offset 3Ch.

Reserved2[944]

Se reserva el desplazamiento de 40h a EFFh.

Todos los registros reservados y todos los bits reservados dentro de los registros son de solo lectura y devuelven 0h cuando se leen, sin embargo, el software no debe confiar en 0h que se devuelvan.

Reserved3[64]

El desplazamiento F00h a FFFh está reservado para registros específicos del conjunto de comandos.

Todos los registros reservados y todos los bits reservados dentro de los registros son de solo lectura y devuelven 0h cuando se leen, sin embargo, el software no debe confiar en 0h que se devuelvan.

Doorbells[0]

Especifica el inicio del primer registro doorbell. El de cola de cola de envío del administrador.

Observaciones

Los registros del controlador se encuentran en los registros de la dirección base inferior del registro de memoria (MLBAR)/Registros de memoria de la dirección base superior (MUBAR) (PCI BAR0 y BAR1) que se asignan a un espacio de memoria que admite el acceso en orden y los anchos de acceso variable. Para muchas arquitecturas de equipo, especificar el espacio de memoria como no accesible genera este comportamiento.

El host no debe emitir accesos bloqueados y debe acceder a los registros en su ancho nativo o accesos alineados de 32 bits. La infracción de cualquiera de estos requisitos de host da como resultado un comportamiento indefinido.

El intervalo de direcciones específicas del proveedor comienza después del último timbre admitido por el controlador y continúa hasta el final del intervalo admitido BAR0/1. El inicio del intervalo de direcciones específico del proveedor comienza en la misma ubicación y no depende del número de timbres asignados.

No se admiten los accesos que tienen como destino cualquier parte de dos o más registros.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 10
encabezado de nvme.h

Consulte también