Freigeben über


Festlegen der PCI-Konfigurationsdaten einer virtuellen Funktion

Der Miniporttreiber für eine PCI Express (PCIe) Virtual Function (VF) wird im Gastbetriebssystem einer untergeordneten Hyper-V-Partition ausgeführt. Aus diesem Fall kann der VF-Miniporttreiber nicht direkt auf Hardwareressourcen wie den PCI-Konfigurationsraum des VF zugreifen. Nur der Miniporttreiber für die PCIe Physical Function (PF) kann auf den PCI-Konfigurationsraum für eine VF zugreifen. Der PF-Miniporttreiber wird im Verwaltungsbetriebssystem einer übergeordneten Hyper-V-Partition ausgeführt und hat privilegierten Zugriff auf die VF-Ressourcen.

Der überlastende Treiber, z. B. der Virtualisierungsstapel, gibt die OID-Set-Anforderung von OID_SRIOV_WRITE_VF_CONFIG_SPACE aus, wenn der VF-Miniporttreiber NdisMSetBusData aufruft , um in seinen PCI-Konfigurationsraum zu schreiben.

Bevor er diese OID-Setanforderung ausgibt, muss der überlastende Treiber die Member derNDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS-Struktur wie folgt festlegen:

  • Legen Sie den VFId-Member auf den Bezeichner des VF fest, für den die Informationen geschrieben werden sollen.

  • Legen Sie den Offset-Member auf den Offset im PCI-Konfigurationsraum des VF fest, in den Daten geschrieben werden.

  • Legen Sie das Length-Element auf die Anzahl der Bytes fest, die in den PCI-Konfigurationsraum des VF geschrieben werden sollen.

  • Legen Sie den BufferOffset-Member auf den Offset innerhalb des Puffers fest (auf den derInformationBuffer-Member verweist), der die Daten enthält, die in den angegebenen PCI-Konfigurationsraum des angegebenen VF geschrieben werden. Dieser Offset wird in Byteseinheiten vom Anfang der NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS-Struktur angegeben.

Wenn er die OID-Methodenanforderung von OID_SRIOV_WRITE_VF_CONFIG_SPACE verarbeitet, muss der PF-Miniporttreiber die folgenden Richtlinien befolgen:

  • Der PF-Miniporttreiber muss überprüfen, ob der VF, der vom VFId-Member der NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS-Struktur angegeben wird, Ressourcen aufweist, die zuvor zugewiesen wurden. Der PF-Miniporttreiber weist Ressourcen für eine VF über eine OID-Methodenanforderung von OID_NIC_SWITCH_ALLOCATE_VF zu.

    Wenn ressourcen für die angegebene VF nicht zugewiesen wurden, muss der Treiber die OID-Anforderung nicht ausführen.

  • Der PF-Miniporttreiber ruft NdisMSetVirtualFunctionBusData auf, um in den angeforderten PCI-Konfigurationsraum zu schreiben. Der PF-Miniporttreiber kann jedoch auch PCI-Konfigurationsspeicherdaten für die VF zurückgeben, die der Treiber aus vorherigen Lese- oder Schreibvorgängen des PCI-Konfigurationsraums zwischengespeichert hat.

    Hinweis Wenn ein unabhängiger Hardwareanbieter (Independent Hardware Vendor, IHV) als Teil des SR-IOV-Treiberpakets einen virtuellen Bustreiber (VBD) bereitstellt, darf sein PF-Miniporttreiber NdisMSetVirtualFunctionBusData nicht aufrufen. Stattdessen muss der Treiber über einen privaten Kommunikationskanal mit dem VBD kommunizieren und anfordern, dass der VBD SetVirtualFunctionData aufruft. Diese Funktion wird über die GUID_VPCI_INTERFACE_STANDARD-Schnittstelle verfügbar gemacht, die vom zugrunde liegenden VIRTUAL PCI-Bustreiber (VPCI) unterstützt wird.

Wenn der PF-Miniporttreiber die OID-Anforderung erfolgreich abschließen kann, muss der Treiber die angeforderten PCI-Konfigurationsraumdaten in den Puffer kopieren, auf den vom InformationBuffer-Member der NDIS_OID_REQUEST-Struktur verwiesen wird. Der Treiber kopiert die Daten in den Puffer an dem Offset, der durch dasBufferOffset-Element der NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS-Struktur angegeben wird.