Compartilhar via


Alocando recursos para uma função virtual

Um adaptador de rede que dá suporte à virtualização de E/S raiz única (SR-IOV) deve ser capaz de dar suporte aos seguintes componentes de hardware:

  • Uma função física PCI Express (PCIe) (PF). O PF sempre existe no adaptador de rede e é anexado à partição pai do Hyper-V.

    Para obter mais informações sobre esse componente de hardware, consulte FUNÇÃO Física SR-IOV (PF).

  • Uma ou mais PCIe Virtual Functions (VF). Cada VF deve ser inicializada e anexada a uma partição filho do Hyper-V antes que os componentes de rede do sistema operacional convidado possam enviar ou receber pacotes pela VF.

    Para obter mais informações sobre esse componente de hardware, consulte VFs (Funções Virtuais) SR-IOV.

O driver de miniporto PF, que é executado no sistema operacional de gerenciamento da partição pai do Hyper-V, aloca recursos para o PF e cada VF no adaptador de rede SR-IOV. Esse driver aloca recursos para o PF como faria para qualquer adaptador de rede. No entanto, o driver aloca recursos para cada VF da seguinte maneira:

  • O driver de miniporto PF aloca recursos de hardware para cada VF quando o driver cria o adaptador de rede cartão (NIC) no adaptador de rede. O driver conclui a alocação de recursos de hardware para os VFs chamando NdisMEnableVirtualization. Para obter mais informações sobre esse processo, consulte Criando um comutador NIC.

  • O driver de miniporto PF aloca recursos de software para uma VF quando o driver manipula uma solicitação de método OID (identificador de objeto) de OID_NIC_SWITCH_ALLOCATE_VF. Embora os recursos de hardware tenham sido alocados para uma VF, ele é considerado não operacional até que o driver de miniporto PF conclua o OID_NIC_SWITCH_ALLOCATE_VF com êxito.

O driver sobreposto pode solicitar a alocação de recursos de software para um VF emitindo uma solicitação de método OID de OID_NIC_SWITCH_ALLOCATE_VF. O membro InformationBuffer da estrutura NDIS_OID_REQUEST da solicitação OID contém um ponteiro para uma estrutura NDIS_NIC_SWITCH_VF_PARAMETERS .

Após um retorno bem-sucedido da solicitação OID, o membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para uma estrutura NDIS_NIC_SWITCH_VF_PARAMETERS . Essa estrutura tem um identificador VF exclusivo do adaptador e o RID (Identificador do Solicitante de PCI). Esses identificadores são usados das seguintes maneiras:

  • O driver de sobreposição usa o identificador VF em ações relacionadas ao VF, como o seguinte:

    • Obtendo os parâmetros atuais do VF por meio de uma solicitação de método OID de OID_NIC_SWITCH_VF_PARAMETERS.

    • Liberar recursos alocados anteriormente para o VF por meio de uma solicitação de conjunto de OID de OID_NIC_SWITCH_FREE_VF.

    • Emitir uma redefinição de PCI para o VF por meio de uma solicitação de conjunto de OID de OID_SRIOV_RESET_VF.

  • O RID é usado pela pilha de virtualização para remapear o DMA e interromper entre o PF e o VF. O RID também permite que a IOMMU (unidade de gerenciamento de memória de entrada/saída) de hardware converta endereços físicos de convidado para hospedar endereços físicos.

Para obter mais informações sobre como os problemas de driver excessivamente OID_NIC_SWITCH_ALLOCATE_VF solicitações de método, consulte Emitindo solicitações de OID_NIC_SWITCH_ALLOCATE_VF.

Para obter mais informações sobre como o driver de miniporto PF lida com OID_NIC_SWITCH_ALLOCATE_VF solicitações de método, consulte Manipulando solicitações de OID_NIC_SWITCH_ALLOCATE_VF.

Nota Depois que os recursos de um VF forem alocados por meio de uma solicitação de método OID de OID_NIC_SWITCH_ALLOCATE_VF, os parâmetros de recurso para o VF não poderão ser alterados dinamicamente.