Выделение ресурсов для виртуальной функции
Сетевой адаптер, поддерживающий виртуализацию одно корневых операций ввода-вывода (SR-IOV) должен поддерживать следующие аппаратные компоненты:
Одна физическая функция PCI Express (PCIe) (PF). PF всегда существует на сетевом адаптере и присоединён к Hyper-V родительскому разделу.
Дополнительные сведения об этом аппаратном компоненте см. в SR-IOV Физическая функция (PF).
Одна или несколько виртуальных функций PCIe (VF). Каждая виртуальная машина должна быть инициализирована и присоединена к дочерней секции Hyper-V, прежде чем сетевые компоненты гостевой операционной системы могут отправлять или получать пакеты через VF.
Для получения дополнительной информации об этом аппаратном компоненте см. SR-IOV виртуальных функций (ВФ).
Мини-драйвер PF, который выполняется в операционной системе управления в родительском разделе Hyper-V, выделяет ресурсы для PF и каждого VF на сетевом адаптере SR-IOV. Этот драйвер выделяет ресурсы для PF так же, как и для любого сетевого адаптера. Однако драйвер выделяет ресурсы для каждой виртуальной функции следующим образом:
Драйвер минипорта PF выделяет аппаратные ресурсы для каждой виртуальной функции при создании сетевой интерфейсной карты (NIC) на сетевом адаптере. Драйвер завершает выделение ресурсов оборудования для виртуальных функций путем вызова NdisMEnableVirtualization. Дополнительные сведения об этом процессе см. в создании коммутатора сетевого адаптера.
Драйвер минипорта PF выделяет ресурсы программного обеспечения для VF, когда драйвер обрабатывает запрос метода идентификатора объекта (OID) OID_NIC_SWITCH_ALLOCATE_VF. Несмотря на то, что аппаратные ресурсы были выделены для VF, она считается неработоспособной, пока драйвер мини-порта PF успешно не завершит выполнение команды OID_NIC_SWITCH_ALLOCATE_VF.
Драйвер верхнего уровня может запросить выделение программных ресурсов для VF, выполнив метод OID запроса OID_NIC_SWITCH_ALLOCATE_VF. Элемент InformationBuffer структуры NDIS_OID_REQUEST для запроса OID содержит указатель на структуру NDIS_NIC_SWITCH_VF_PARAMETERS.
После успешного возврата по запросу OID элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_NIC_SWITCH_VF_PARAMETERS. Эта структура имеет уникальный идентификатор VF адаптера и идентификатор обработчика запросов PCI (RID). Эти идентификаторы используются следующими способами:
Верхний драйвер использует идентификатор VF в действиях, связанных с VF, например, следующим образом:
Получение текущих параметров VF с помощью запроса метода OID OID_NIC_SWITCH_VF_PARAMETERS.
Освобождение ранее выделенных ресурсов для VF с помощью запроса набора OID OID_NIC_SWITCH_FREE_VF.
Выдача сброса PCI в VF через запрос набора OID OID_SRIOV_RESET_VF.
RID используется стеком виртуализации для перемещения DMA и прерываний между физической функцией (PF) и виртуальной функцией (VF). Rid также позволяет аппаратному блоку управления памятью ввода-вывода (IOMMU) преобразовывать гостевые физические адреса в физические адреса хоста.
Дополнительные сведения о том, как драйвер обрабатывает запросы метода OID_NIC_SWITCH_ALLOCATE_VF, см. в разделе Выполнение запросов OID_NIC_SWITCH_ALLOCATE_VF.
Дополнительные сведения о том, как драйвер минипорта PF обрабатывает запросы метода OID_NIC_SWITCH_ALLOCATE_VF, см. в разделе Обработка OID_NIC_SWITCH_ALLOCATE_VF запросов.
Примечание После того, как ресурсы для VF были выделены с помощью запроса метода OID OID_NIC_SWITCH_ALLOCATE_VF, параметры ресурсов для VF нельзя изменить динамически.