仮想関数のリソースの割り当て
単一ルート I/O 仮想化 (SR-IOV) をサポートするネットワーク アダプターは、次のハードウェア コンポーネントをサポートできる必要があります。
1 つの PCI Express (PCIe) 物理機能 (PF)。 PF は常にネットワーク アダプター上に存在し、Hyper-V 親パーティションに接続されます。
このハードウェア コンポーネントの詳細については、「SR-IOV 物理機能 (PF)」を参照してください。
1 つ以上の PCIe 仮想関数 (VF)。 ゲスト オペレーティング システムのネットワーク コンポーネントが VF 経由でパケットを送受信するには、各 VF を初期化して Hyper-V 子パーティションに接続する必要があります。
このハードウェア コンポーネントの詳細については、「SR-IOV 仮想関数 (VFs)」を参照してください。
Hyper-V 親パーティションの管理オペレーティング システムで実行される PF ミニポート ドライバーは、SR-IOV ネットワーク アダプター上の PF と各 VF のリソースを割り当てます。 このドライバーは、任意のネットワーク アダプターの場合と同様に、PF のリソースを割り当てます。 ただし、ドライバーは、次のように各 VF のリソースを割り当てます。
PF ミニポート ドライバーは、ドライバーがネットワーク アダプターにネットワーク インターフェイス カード (NIC) を作成するときに、各 VF のハードウェア リソースを割り当てます。 ドライバーは、NdisMEnableVirtualization を呼び出すことによって、VM のハードウェア リソースの割り当てを完了します。 このプロセスの詳細については、「NICスイッチの作成」を参照してください。
PF ミニポート ドライバーは、ドライバーが OID_NIC_SWITCH_ALLOCATE_VF のオブジェクト識別子 (OID) メソッド要求を処理するとき、VF にソフトウェア リソースを割り当てます。 ハードウェア リソースが VF に割り当てられている場合でも、PF ミニポート ドライバーが正常に OID_NIC_SWITCH_ALLOCATE_VF を完了するまで非運用状態であると見なされます。
上にあるドライバーは、OID_NIC_SWITCH_ALLOCATE_VF の OID メソッド要求を発行することによって、VF のソフトウェア リソースの割り当てを要求できます。 OID 要求の InformationBuffer メンバー (NDIS_OID_REQUEST 構造) には、NDIS_NIC_SWITCH_VF_PARAMETERS 構造へのポインターが含まれています。
OID メソッド要求から正常に戻った後、InformationBuffer メンバー (NDIS_OID_REQUEST InformationBuffer構造) には、 NDIS_RECEIVE_FILTER_PARAMETERS 構造へのポインターが含まれます。 この構造には、アダプター固有の VF 識別子と PCI リクエスタ識別子 (RID) があります。 これらの識別子は、次の方法で使用されます。
上にあるドライバーは、次のような VF に関連するアクションで VF 識別子を使用します。
OID_NIC_SWITCH_VF_PARAMETERS の OID メソッド要求を使用して現在の VF パラメーターを取得します。
OID_NIC_SWITCH_FREE_VF の OID セット要求を使用して、VF に以前に割り当てられたリソースを解放します。
OID_SRIOV_RESET_VFの OID セット要求を介して VF に PCI リセットを発行する。
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 要求の処理」を参照してください。
注: OID_NIC_SWITCH_ALLOCATE_VF の OID メソッド要求を通じて VF のリソースが割り当てられた後、VF のリソース パラメーターを動的に変更することはできません。