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


Восстановление виртуальной функции

Верхний драйвер выдает запрос на установку идентификатора объекта (OID) OID_SRIOV_RESET_VF для сброса указанной виртуальной функции PCI Express (PCIe). VF — это аппаратный компонент сетевого адаптера, который поддерживает виртуализацию одного корневого ввода-вывода. Вышележащие драйверы отправляют этот запрос набора OID мини-порту драйвера физической функции PCI Express (PCIe).

Например, стек виртуализации выполняется в операционной системе управления родительской секции Hyper-V. Прежде чем стек отсоединяет VF от дочернего раздела Hyper-V, он запрашивает сброс уровня функций (FLR) для VF. Так как FLR является привилегированной операцией, она может выполняться только драйвером мини-порта PF, который также работает в операционной системе управления. Чтобы запросить FLR указанного VF, стек виртуализации отправляет запрос OID_SRIOV_RESET_VFминипорт-драйверу PF.

Прежде чем драйвер должен отправлять этот запрос на установку набора OID, ему необходимо инициализировать структуру NDIS_SRIOV_RESET_VF_PARAMETERS. Драйвер должен задать элемент VFId идентификатору виртуальной функции, которую необходимо сбросить.

При обработке этого запроса OID драйвер минипорта PF должен соответствовать следующим рекомендациям:

  • Драйвер мини-порта PF должен убедиться, что VF, указанная членом VFId структуры NDIS_SRIOV_RESET_VF_PARAMETERS, имеет ранее выделенные ресурсы. Драйвер мини-порта PF выделяет ресурсы для VF во время запроса метода OID OID_NIC_SWITCH_ALLOCATE_VF. Если ресурсы для указанной виртуальной функции (VF) не выделены, драйвер должен отклонить этот запрос OID.

  • Операция сброса должна затрагивать только указанный VF. Операция не должна влиять на другие виртуальные машины или PF на одном сетевом адаптере.