Allocazione di risorse per una funzione virtuale
Una scheda di rete che supporta la virtualizzazione di I/O radice singola (SR-IOV) deve essere in grado di supportare i componenti hardware seguenti:
Una funzione fisica PCI Express (PCIe) (PF). Il PF esiste sempre sulla scheda di rete ed è collegato alla partizione padre Hyper-V.
Per altre informazioni su questo componente hardware, vedere SR-IOV Funzione fisica (PF).
Una o più funzioni virtuali PCIe (VF). Ogni VF deve essere inizializzato e collegato a una Hyper-V partizione figlio prima che i componenti di rete del sistema operativo guest possano inviare o ricevere pacchetti tramite VF.
Per altre informazioni su questo componente hardware, vedere SR-IOV funzioni virtuali (VFS).
Il driver miniport PF, che viene eseguito nel sistema operativo di gestione della partizione padre Hyper-V, alloca le risorse per il PF e ogni VF sull'adattatore di rete SR-IOV. Questo driver alloca le risorse per la PF come farebbe per qualsiasi scheda di rete. Tuttavia, il driver alloca le risorse per ogni VF nel modo seguente:
Il driver miniport PF alloca le risorse hardware per ogni VF quando il driver crea la scheda di interfaccia di rete (NIC) nella scheda di rete. Il driver completa l'allocazione delle risorse hardware per le funzioni virtuali chiamando NdisMEnableVirtualization. Per altre informazioni su questo processo, vedere Creazione di un commutatore di scheda di interfaccia di rete.
Il driver miniport PF alloca le risorse software per un VF quando il driver gestisce una richiesta di metodo OID (Object Identifier) di OID_NIC_SWITCH_ALLOCATE_VF. Anche se le risorse hardware sono state allocate per un VF, viene considerato non operativo fino a quando il driver miniport PF non completa correttamente il OID_NIC_SWITCH_ALLOCATE_VF.
Il driver sovrastante può richiedere l'allocazione delle risorse software per un VF inviando una richiesta di metodo OID di OID_NIC_SWITCH_ALLOCATE_VF. Il membro InformationBuffer della struttura NDIS_OID_REQUEST per la richiesta OID contiene un puntatore a una struttura NDIS_NIC_SWITCH_VF_PARAMETERS.
Dopo un ritorno con successo dalla richiesta OID, il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene un puntatore a una struttura NDIS_NIC_SWITCH_VF_PARAMETERS. Questa struttura ha un identificatore VF univoco dell'adattatore e un identificatore RID (PCI Requestor Identifier). Questi identificatori vengono usati nei modi seguenti:
Il driver superiore utilizza l'identificatore VF nelle azioni relative al VF, come ad esempio:
Recupero dei parametri VF correnti tramite una richiesta di metodo OID di OID_NIC_SWITCH_VF_PARAMETERS.
Liberando le risorse allocate in precedenza per il VF tramite una richiesta OID set di OID_NIC_SWITCH_FREE_VF.
Esecuzione di una reimpostazione PCI al VF tramite una richiesta di impostazione OID di OID_SRIOV_RESET_VF.
Il RID viene usato dallo stack di virtualizzazione per la rimappatura di DMA e gli interrupt tra il PF e il VF. Il RID consente anche all'unità di gestione della memoria di input/output hardware (IOMMU) di convertire gli indirizzi fisici guest in indirizzi fisici host.
Per ulteriori informazioni su come l'overlying driver effettua richieste di metodi OID_NIC_SWITCH_ALLOCATE_VF, vedere Emissione di richieste OID_NIC_SWITCH_ALLOCATE_VF.
Per ulteriori informazioni su come il driver miniport PF gestisce le richieste del metodo OID_NIC_SWITCH_ALLOCATE_VF, consultare Gestione delle richieste OID_NIC_SWITCH_ALLOCATE_VF.
Nota Dopo che le risorse per un VF sono state allocate tramite una richiesta di metodo OID di OID_NIC_SWITCH_ALLOCATE_VF, i parametri di risorsa per VF non possono essere modificati in modo dinamico.