Поделиться через


объединение NVME_CONTROLLER_CONFIGURATION (nvme.h)

Содержит параметры конфигурации чтения и записи для контроллера.

Ведущее программное обеспечение устанавливает для следующих полей допустимые значения перед включением контроллера, задав для поля Enable EN значение 1:

Эта структура используется в поле Возможности контроллера (CC) структуры NVME_CONTROLLER_REGISTERS .

Синтаксис

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;

Члены

DUMMYSTRUCTNAME

DUMMYSTRUCTNAME.EN

Указывает, включен ли контроллер для обработки команд.

Если для этого значения задано 1значение , контроллер будет обрабатывать команды на основе операций записи в очередь отправки . Если для этого значения задано 0значение , контроллер не будет обрабатывать команды и не помещать записи очереди завершения в очередь завершения.

При переходе этого поля с 1 на 0контроллер сбрасывается (называется сбросом контроллера). При сбросе удаляются все очереди отправки ввода-вывода и очереди завершения ввода-вывода, сбрасываются очереди отправки и завершения Администратор, а оборудование переводится в состояние простоя. Сброс не влияет на регистры PCI Express или Администратор очереди (AQA, ASQ или ACQ). Все остальные регистры контроллеров и внутренние состояния контроллера (например, значения компонентов, которые не являются постоянными в состояниях питания) сбрасываются до значений по умолчанию. Контроллер гарантирует отсутствие потери данных для команд, в которых перед операцией сброса были помещены соответствующие записи очереди завершения в очередь завершения ввода-вывода.

Когда это поле очищается до 0, значение поля Ready (RDY) в разделе Состояние контроллера0 очищается контроллером после того, как контроллер будет готов к повторному включению. Если для этого поля задано значение 1, контроллер присваивает значению поля RDY в разделе Состояние1 контроллера значение , когда оно будет готово к обработке команд. RDY может быть задано до 1 того, как пространства имен будут готовы к доступу.

Если для этого поля 01 задано 1значение RDY, а для параметра 1 — значение 0, если RDY равно 0, результаты будут неопределенными. Регистры очереди Администратор (AQA, ASQ и ACQ) будут изменены только при очистке EN до 0.

DUMMYSTRUCTNAME.Reserved0

DUMMYSTRUCTNAME.CSS

Указывает набор команд ввода-вывода, выбранный для использования для очередей отправки ввода-вывода.

Ведущее программное обеспечение выберет только поддерживаемый набор команд ввода-вывода, как указано в поле CSSв разделе Возможности контроллера.

Это значение этого поля можно изменить только при отключении контроллера (поле EN очищается до 0). Выбранный набор команд ввода-вывода будет использоваться для всех очередей отправки ввода-вывода.

DUMMYSTRUCTNAME.MPS

Указывает размер страницы памяти узла. Размер страницы памяти — (2 ^ (12 + MPS)). Таким образом, минимальный размер страницы памяти узла составляет 4 КБ, а максимальный размер страницы памяти узла — 128 МБ.

Значение, заданное программным обеспечением узла, должно быть поддерживаемым значением, как указано в полях MPSMAX и MPSMINв разделе Возможности контроллера. В этом поле описывается значение, используемое для размера записи PRP.

Это поле может быть изменено, только если en очищается до 0.

DUMMYSTRUCTNAME.AMS

Указывает используемый механизм арбитража.

Это поле может быть изменено, только если en очищается до 0.

Программное обеспечение узла может задать для этого поля только поддерживаемые механизмы арбитража, как указано в поле AMSвозможности контроллера. Если для этого поля задано неподдерживаемое значение, поведение не определено.

DUMMYSTRUCTNAME.SHN

Задает значение NVME_CC_SHN_SHUTDOWN_NOTIFICATIONS , которое используется для запуска обработки завершения работы при завершении работы. Например, если ожидается условие выключения питания.

Для обычного уведомления о завершении работы ожидается, что контроллеру будет предоставлено время для обработки уведомления о завершении работы. Для уведомления о внезапном завершении работы узел может не ждать завершения обработки завершения работы перед отключением питания. Это поле должно быть записано программным обеспечением узла до любого условия выключения питания и перед изменением состояния управления питанием PCI. Рекомендуется также записать это поле до горячей перезагрузки.

Чтобы определить, когда обработка завершена, см. значение SHST в разделе Состояние контроллера.

DUMMYSTRUCTNAME.IOSQES

Указывает размер записи очереди отправки ввода-вывода, которая используется для выбранного набора команд ввода-вывода.

Обязательные и максимальные значения для этого поля указываются в SQES. RequiredEntrySize и SQES. Поля MaxEntrySize структуры данных идентифицировать контроллер для каждого набора команд ввода-вывода. Значение имеет значение в байтах и указывается в виде двух значений (2^n).

DUMMYSTRUCTNAME.IOCQES

Указывает размер записи очереди завершения ввода-вывода, которая используется для выбранного набора команд ввода-вывода.

Обязательные и максимальные значения для этого поля указываются в CQES. RequiredEntrySize и CQES. Поля MaxEntrySize структуры данных идентифицировать контроллер для каждого набора команд ввода-вывода. Значение имеет значение в байтах и указывается в виде двух значений (2^n).

DUMMYSTRUCTNAME.Reserved1

AsUlong

Требования

Требование Значение
Минимальная версия клиента Windows 10
Верхняя часть nvme.h