union NVME_CONTROLLER_CONFIGURATION (nvme.h)

Contient les paramètres de configuration en lecture/écriture pour le contrôleur.

Le logiciel hôte définit les champs suivants sur des valeurs valides avant d’activer le contrôleur en définissant la valeur Activer le champ EN sur 1:

Cette structure est utilisée dans le champ Capacité du contrôleur (CC) de la structure NVME_CONTROLLER_REGISTERS .

Syntaxe

typedef union {
  struct {
    ULONG EN : 1;
    ULONG Reserved0 : 3;
    ULONG CSS : 3;
    ULONG MPS : 4;
    ULONG AMS : 3;
    ULONG SHN : 2;
    ULONG IOSQES : 4;
    ULONG IOCQES : 4;
    ULONG Reserved1 : 8;
  } DUMMYSTRUCTNAME;
  ULONG  AsUlong;
} NVME_CONTROLLER_CONFIGURATION, *PNVME_CONTROLLER_CONFIGURATION;

Membres

DUMMYSTRUCTNAME

DUMMYSTRUCTNAME.EN

Indique si le contrôleur est activé pour traiter les commandes.

Lorsque cette valeur est définie sur 1, le contrôleur traite les commandes en fonction des écritures de la queue de porte de la file d’attente de soumission . Lorsque cette valeur est effacée en 0, le contrôleur ne traite pas les commandes ni ne publie les entrées de file d’attente d’achèvement dans les files d’attente d’achèvement.

Lorsque ce champ passe de 1 à 0, le contrôleur est réinitialisé (appelé Réinitialisation du contrôleur). La réinitialisation supprime toutes les files d’attente de soumission d’E/S et les files d’attente d’achèvement des E/S, réinitialise les Administration file d’attente de soumission et la file d’attente d’achèvement, et met le matériel à l’état inactif. La réinitialisation n’affecte pas les registres PCI Express ni les registres de file d’attente Administration (AQA, ASQ ou ACQ). Tous les autres registres de contrôleur et les états internes du contrôleur (tels que les valeurs de fonctionnalité qui ne sont pas persistantes entre les états d’alimentation) sont réinitialisés à leurs valeurs par défaut. Le contrôleur garantit qu’il n’y a pas de perte de données pour les commandes dont les entrées de file d’attente d’achèvement correspondantes ont été publiées dans une file d’attente d’achèvement des E/S avant l’opération de réinitialisation.

Lorsque ce champ est effacé 0en , la valeur du champ Prêt (RDY) dans État du contrôleur est effacée 0 par le contrôleur une fois que le contrôleur est prêt à être réactivé. Lorsque ce champ est défini sur 1, le contrôleur définit la valeur du champ RDY dans État du contrôleur sur 1 lorsqu’il est prêt à traiter des commandes. RDY peut être défini sur 1 avant que les espaces de noms soient prêts à être consultés.

La définition de ce champ d’un 0 à un 1 lorsque RDY est un 1, ou la définition de ce champ d’un « 1 » sur un « 0 » lorsque RDY est un « 0 », a des résultats non définis. Les registres de file d’attente Administration (AQA, ASQ et ACQ) ne seront modifiés que lorsque EN est effacé en 0.

DUMMYSTRUCTNAME.Reserved0

DUMMYSTRUCTNAME.CSS

Spécifie le jeu de commandes d’E/S sélectionné pour être utilisé pour les files d’attente de soumission d’E/S.

Le logiciel hôte sélectionne uniquement un jeu de commandes d’E/S pris en charge, comme indiqué dans le champ CSS de Fonctionnalités du contrôleur.

Cette valeur de ce champ ne peut être modifiée que lorsque le contrôleur est désactivé (le champ EN est effacé sur 0). Le jeu de commandes d’E/S sélectionné sera utilisé pour toutes les files d’attente de soumission d’E/S.

DUMMYSTRUCTNAME.MPS

Indique la taille de la page de mémoire hôte. La taille de la page mémoire est (2 ^ (12 + MPS)). Par conséquent, la taille minimale de la page de mémoire hôte est de 4 Ko et la taille maximale de la page de mémoire hôte est de 128 Mo.

La valeur définie par le logiciel hôte doit être une valeur prise en charge, comme indiqué par les champs MPSMAX et MPSMIN des fonctionnalités du contrôleur. Ce champ décrit la valeur utilisée pour la taille de l’entrée PRP.

Ce champ ne peut être modifié que si EN est effacé en 0.

DUMMYSTRUCTNAME.AMS

Spécifie le mécanisme d’arbitrage à utiliser.

Ce champ ne peut être modifié que si EN est effacé en 0.

Le logiciel hôte peut uniquement définir ce champ sur les mécanismes d’arbitrage pris en charge, comme indiqué dans le champ AMS des Fonctionnalités du contrôleur. Si ce champ est défini sur une valeur non prise en charge, le comportement n’est pas défini.

DUMMYSTRUCTNAME.SHN

Spécifie une valeur NVME_CC_SHN_SHUTDOWN_NOTIFICATIONS utilisée pour lancer le traitement d’arrêt en cas d’arrêt. Par exemple, lorsqu’une condition de mise hors tension est attendue.

Pour une notification d’arrêt normale, il est attendu que le contrôleur a le temps de traiter la notification d’arrêt. Pour une notification d’arrêt brusque, l’hôte peut ne pas attendre la fin du traitement de l’arrêt avant de perdre l’alimentation. Ce champ doit être écrit dans par le logiciel hôte avant toute condition de mise hors tension et avant toute modification de l’état de gestion de l’alimentation PCI. Il est recommandé que ce champ soit également écrit dans avant un redémarrage à chaud.

Pour déterminer à quel moment le traitement d’arrêt est terminé, reportez-vous à la valeur SHST dans État du contrôleur.

DUMMYSTRUCTNAME.IOSQES

Spécifie la taille d’entrée file d’attente de soumission d’E/S utilisée pour le jeu de commandes d’E/S sélectionné.

Les valeurs requises et maximales pour ce champ sont spécifiées dans le SQES. RequiredEntrySize et SQES. Champs MaxEntrySize de la structure de données Identifier le contrôleur pour chaque jeu de commandes d’E/S. La valeur est en octets et est spécifiée sous la forme d’une puissance de deux (2^n).

DUMMYSTRUCTNAME.IOCQES

Spécifie la taille d’entrée file d’attente d’achèvement des E/S utilisée pour le jeu de commandes d’E/S sélectionné.

Les valeurs requises et maximales pour ce champ sont spécifiées dans le CQES. RequiredEntrySize et CQES. Champs MaxEntrySize de la structure de données Identifier le contrôleur pour chaque jeu de commandes d’E/S. La valeur est en octets et est spécifiée sous la forme d’une puissance de deux (2^n).

DUMMYSTRUCTNAME.Reserved1

AsUlong

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
En-tête nvme.h