Udostępnij przez


Ustawianie danych konfiguracji PCI funkcji wirtualnej

Sterownik miniportu dla Wirtualnej Funkcji PCI Express (PCIe) działa w systemie operacyjnym gościa podrzędnej partycji Hyper-V. Z tego powodu sterownik miniportu VF nie może bezpośrednio uzyskać dostępu do zasobów sprzętowych, takich jak przestrzeń konfiguracji PCI VF. Tylko sterownik miniportu dla fizycznej funkcji PCIe (PF) może uzyskać dostęp do przestrzeni konfiguracyjnej PCI dla VF. Sterownik miniportu PF działa w systemie operacyjnym zarządzania partycji nadrzędnej Hyper-V i ma uprzywilejowany dostęp do zasobów VF.

Sterownik nadrzędny, taki jak stos wirtualizacji, wysyła żądanie ustawienia identyfikatora OID OID_SRIOV_WRITE_VF_CONFIG_SPACE, gdy sterownik miniportu VF używa NdisMSetBusData, aby zapisać do jego przestrzeni konfiguracyjnej PCI.

Przed wysłaniem tego żądania ustawienia zestawu OID, sterownik nadrzędny musi ustawić elementy członkowskie strukturyNDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS w następujący sposób:

  • Ustaw członka VFId jako identyfikator VF, dla której mają zostać zapisane dane.

  • Ustaw element Offset na przesunięcie w przestrzeni konfiguracji PCI VF, w której dane będą zapisywane.

  • Ustaw pole Długości na liczbę bajtów, które mają być zapisane w przestrzeni konfiguracji PCI VF.

  • Ustaw element członkowski BufferOffset na przesunięcie w buforze (wskazywanym przez element członkowskiInformationBuffer), które będzie zawierać dane zapisywane w przestrzeni konfiguracji PCI określonego VF. To przesunięcie jest określone w jednostkach bajtów od początku struktury NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS.

Gdy obsługuje żądanie metody OID OID_SRIOV_WRITE_VF_CONFIG_SPACE, sterownik miniportu PF musi postępować zgodnie z następującymi wytycznymi:

  • Sterownik miniportu PF musi zweryfikować, czy VF, określony przez członek elementu VFId struktury NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS, posiada zasoby, które zostały wcześniej przydzielone. Sterownik miniportu PF przydziela zasoby dla VF poprzez żądanie metody OID OID_NIC_SWITCH_ALLOCATE_VF.

    Jeśli zasoby dla określonego VF nie zostały przydzielone, sterownik musi odrzucić żądanie OID.

  • Sterownik miniportu PF wywołuje NdisMSetVirtualFunctionBusData do zapisu w żądanym obszarze konfiguracji PCI. Jednak sterownik miniportu PF może również zwrócić dane przestrzeni konfiguracji PCI dla VF, które sterownik zbuforował z poprzednich operacji odczytu lub zapisu przestrzeni konfiguracji PCI.

    Uwaga Jeśli niezależny dostawca sprzętu (IHV) udostępnia sterownik magistrali wirtualnej (VBD) w ramach pakietu sterowników SR-IOV , jego sterownik miniportu PF nie może wywołać NdisMSetVirtualFunctionBusData. Zamiast tego sterownik musi nawiązać interfejs z VBD za pośrednictwem prywatnego kanału komunikacyjnego i zażądać od VBD wywołania SetVirtualFunctionData. Ta funkcja jest udostępniona przez interfejs GUID_VPCI_INTERFACE_STANDARD, który jest obsługiwany przez podstawowy sterownik wirtualnej magistrali PCI (VPCI).

Jeśli sterownik miniportu PF może pomyślnie ukończyć żądanie OID, musi skopiować żądane dane dotyczące przestrzeni konfiguracji PCI do bufora wskazanego przez członka InformationBuffer w strukturze NDIS_OID_REQUEST. Sterownik kopiuje dane do buforu z przesunięciem określonym przez składowąBufferOffset struktury NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS.