SR-IOV описывает возможность представить физическое устройство как несколько виртуальных. Число уже включённых VF сообщает sriov_numvfs; аппаратная возможность и включённое количество — разные сведения.
Почему это важно
Для плана с заданным числом VF нужны аппаратная возможность, предел используемого драйвера и текущее включение. Изменение количества начинают с проверки исходного состояния, чтобы запрошенный переход соответствовал ABI.
Что подтверждено
sriov_totalvfs появляется у физического PCIe-устройства с поддержкой SR-IOV и сообщает максимальное число VF, которое может поддержать PF.
Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_totalvfs, строки 289–298.
sriov_totalvfs обычно соответствует TotalVFs аппаратной возможности, но драйвер вправе уменьшить сообщаемое значение при обнаружении устройства через pci_sriov_set_totalvfs().
Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_totalvfs, строки 293–300.
Чтение sriov_numvfs возвращает число виртуальных функций, включённых на данной PF.
Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_numvfs, строки 302–310.
Описанный порядок включения VF через sysfs — проверить нулевое sriov_numvfs, затем записать требуемое число, не превышающее sriov_totalvfs.
Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. HOWTO § How can I enable SR-IOV capability, строки 43–51; ABI What: …/sriov_numvfs, строки 311–316. Это проверка допустимости перехода; результат работы драйвера и нагрузки оценивается отдельно.
Запись нуля в sriov_numvfs отключает виртуальные функции выбранной PF.
Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. HOWTO § SR-IOV API, строки 79–88; ABI What: …/sriov_numvfs, строки 316–321.
В примере ABI запись 2 в sriov_numvfs возвращает ошибку, если текущее значение отличается и от 0, и от 2.
Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_numvfs, строки 317–321. Сохранены исходное число и условия примера документа.
Ядро проверяет допустимость sriov_numvfs; в примере ABI запись 10 при sriov_totalvfs=8 возвращает ошибку.
Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_numvfs, строки 317–321.
Не путать
Включение VF задаёт состав виртуальных устройств. Для их работы нужен драйвер; sriov_drivers_autoprobe управляет автоматической привязкой вновь включаемых VF. Количество функций и поведение привязки проверяются отдельно.
Параметр nr_virtfn при включении SR-IOV считает виртуальные функции. sriov_vf_total_msix считает общий пул векторов прерываний для VF одной PF. Число устройств и ресурс прерываний имеют разные единицы учёта.
Что проверить
- Прочитайте sriov_totalvfs и sriov_numvfs у одной PF.
- Зафиксируйте драйвер рядом с полученным пределом.
- Проверьте текущее включённое количество перед изменением.
- Сопоставьте запрошенное количество с сообщаемым пределом.
- Учитывайте отключение VF в согласованном плане работ.
- После разрешённой операции перечитайте состояние и сохраните её результат.
Первоисточники
Linux PCI sysfs ABI — sysfs-bus-pci
The Linux Kernel developers · Linux v6.12, тег от 17.11.2024; последний коммит файла 759ec2824289, committer 2024-09-06
Полный ABI-текст: 574 строк. Скачан редактором и прочитан автором 11.09.2026. SHA-256 13a73b125e800a57c2ed352f49a85e03a6dfb41eb33d3d498beb9297b92e28d1. Авторская дата последнего коммита 2024-09-04; дата тегирования задаёт редакцию. Страниц в оригинале нет.
Открыть первоисточникPCI Express I/O Virtualization Howto
The Linux Kernel developers · Linux v6.12, тег от 17.11.2024; последний коммит файла 4f23bd5d09af, committer 2022-07-11
Полный RST: 171 строк. Скачан редактором и прочитан автором 11.09.2026. SHA-256 62669b332bd99190649597ecce75d7a50a75afdb32f352a3546d9195221475ee. Авторская дата последнего коммита 2022-06-07; дата тегирования задаёт редакцию. Страниц в оригинале нет.
Открыть первоисточник