Практикум по документации Linux v6.12

SR-IOV в Linux: функции, драйверы и прерывания

Разберите карту PF/VF, предел и включённое количество, порядок привязки драйвера и настройку MSI-X. Двадцать ситуаций опираются на два полных документа Linux v6.12.

Практика → проверка решения100 минут8 модулей20 вопросов
После курса

Что вы сможете сделать

  1. Связывать PF и VF по модели ядра и ссылкам sysfs.
  2. Различать поддерживаемый предел и включённое количество VF.
  3. Проверять порядок настройки и смысл операций с драйвером.
  4. Различать общий ресурс MSI-X, Table Size и выделенные векторы.
Модуль 1 из 8

Что появилось после включения

Начните с модели устройства, затем переходите к его адресу. Практикум ограничен документацией Linux v6.12; возможности конкретного адаптера, BIOS, IOMMU и гипервизора требуют своих документов.

  • SR-IOV — расширенная возможность PCI Express, благодаря которой одно физическое устройство представляется как несколько виртуальных: PF и VF соответственно.

  • В описанной HOWTO модели возможность SR-IOV по умолчанию выключена, а PF ведёт себя как обычное устройство PCIe.

  • После включения пространство конфигурации каждой VF доступно по собственному Routing ID с номерами шины, устройства и функции. У VF есть PCI Memory Space для отображения её регистров.

  • Ядро рассматривает VF как PCI-устройство, добавленное горячим подключением; для работы ему нужен драйвер, как обычному PCI-устройству.

Модуль 3 из 8

Предел и включённое количество

В акте нужны названия прочитанных показателей рядом с числами. Так другой инженер сможет восстановить смысл снимка.

  • sriov_totalvfs появляется у физического PCIe-устройства с поддержкой SR-IOV и сообщает максимальное число VF, которое может поддержать PF.

  • sriov_totalvfs обычно соответствует TotalVFs аппаратной возможности, но драйвер вправе уменьшить сообщаемое значение при обнаружении устройства через pci_sriov_set_totalvfs().

  • Чтение sriov_numvfs возвращает число виртуальных функций, включённых на данной PF.

Модуль 4 из 8

План изменения числа VF

Сначала опишите начальное состояние и согласованный переход. Затем сопоставьте операцию с правилами интерфейса; успешность работы нагрузки оценивается отдельным испытанием.

  • Описанный порядок включения VF через sysfs — проверить нулевое sriov_numvfs, затем записать требуемое число, не превышающее sriov_totalvfs.

  • Запись нуля в sriov_numvfs отключает виртуальные функции выбранной PF.

  • В примере ABI запись 2 в sriov_numvfs возвращает ошибку, если текущее значение отличается и от 0, и от 2.

  • Ядро проверяет допустимость sriov_numvfs; в примере ABI запись 10 при sriov_totalvfs=8 возвращает ошибку.

Модуль 5 из 8

Настройка следующего включения

Отметьте на шкале работ существующие VF и следующее включение. Проверяйте настройку в этой последовательности.

  • sriov_drivers_autoprobe относится к PF с SR-IOV. Начальное значение 1 означает автоматическую привязку вновь включённых VF к совместимому драйверу.

  • Ноль в sriov_drivers_autoprobe, записанный до включения VF, отключает автоматическую привязку этих VF к драйверу.

  • Изменение sriov_drivers_autoprobe не влияет на уже включённые VF. Для описанного сценария ABI требует отключить VF, изменить настройку и включить VF заново.

Модуль 6 из 8

Имя драйвера, правило и запрос

В журнале разделите настройки выбора и результаты выполненных операций. Такая запись позволяет проверить переход по шагам.

  • driver_override заменяет обычное сопоставление статических и динамических ID: возможность привязки получает драйвер с совпадающим именем. Допускается одно имя без списка через разделители.

  • Пустая строка в driver_override снимает переопределение и возвращает стандартные правила сопоставления устройства и драйвера.

  • Запись driver_override не отвязывает устройство от текущего драйвера и не загружает указанный драйвер автоматически; при отсутствии загруженного драйвера с подходящим именем привязка не произойдёт.

  • Запись адреса PCI-устройства в bind вызывает попытку привязки соответствующего драйвера к устройству. Адрес имеет формат DDDD:BB:DD.F — домен, шина, устройство и функция.

Модуль 7 из 8

Общий ресурс MSI-X

Для учёта ресурса подпишите объект каждого показателя. Сохраните собственную запись назначений рядом со снимком интерфейса.

  • sriov_vf_total_msix относится к PF и содержит общее число векторов MSI-X, доступных для назначения всем связанным с ней VF.

  • У поддерживающего эту возможность устройства sriov_vf_total_msix остаётся постоянным после назначения векторов MSI-X.

  • Если устройство не поддерживает эту возможность распределения векторов MSI-X, sriov_vf_total_msix равен нулю.

Модуль 8 из 8

Настройка VF и выделенные векторы

Завершите разбор проверкой адресата операции, значения настройки и доступности её записи. Результаты работы приложения потребуют отдельного измерения.

  • sriov_vf_msix_count относится к отдельной VF. Положительное записанное число сообщается как Table Size в её возможности MSI-X.

  • Запись нуля в sriov_vf_msix_count восстанавливает значение по умолчанию для устройства.

  • Отрицательные значения sriov_vf_msix_count недопустимы.

  • sriov_vf_msix_count доступен для записи, если PF привязана к драйверу, который реализует sriov_set_msix_vec_count().

  • Имена файлов в msi_irqs соответствуют выделенным устройству векторам прерываний. Значение файла показывает режим этого вектора — msi или msix.

Финишная прямая

Проверьте инженерное мышление

Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.

01В лаборатории включили SR-IOV. Ядро обнаружило новую VF. Какую рабочую модель использовать при подготовке её к работе в Linux?
02Инженер описывает доступ к ресурсам включённой VF по модели HOWTO. Какую запись внести в схему адресации?
03У поддерживающей SR-IOV физической функции драйвер включил виртуальные функции. Инженер читает цель ссылки virtfn0. Как обозначить этот объект в карте устройств?
04В записи виртуальной функции ссылка physfn ведёт к адресу устройства P. Какую связь фиксирует инженер?
05На одной PF прочитаны sriov_totalvfs=16 и sriov_numvfs=4. Как перенести эти значения в акт текущего состояния?
06Аппаратное TotalVFs равно 16. При обнаружении устройства драйвер вызвал pci_sriov_set_totalvfs(), уменьшив сообщаемый предел до 8. Как интерпретировать последующее чтение sriov_totalvfs?
07Работы согласованы, виртуальные функции сейчас отключены. Нужно включить требуемое количество VF в пределах поддерживаемого максимума. Какой шаг соответствует описанному интерфейсу sysfs?
08У PF включены четыре VF, предел равен восьми. Оператор пишет 2 в sriov_numvfs и получает ошибку. Какое условие объясняет этот результат по примеру ABI?
09У физической функции sriov_totalvfs=8, а sriov_numvfs=0. В управляющий атрибут включения записывают 10. Какой результат описан в ABI?
10Сейчас VF отключены. При следующем включении оператор хочет подавить их автоматическую привязку к драйверу. Как расположить изменение sriov_drivers_autoprobe в плане?
11VF уже включены и привязаны к драйверу. Оператор меняет sriov_drivers_autoprobe с 1 на 0. Как отметить состояние этих VF сразу после изменения настройки?
12Устройство привязано к драйверу alpha. Оператор записывает beta в driver_override; beta пока не загружен. Как трактовать результат одной этой записи?
13В driver_override записано имя специального драйвера. Оператор очищает атрибут пустой строкой. Какое правило выбора действует после очистки?
14Оператор записал PCI-адрес устройства в bind выбранного драйвера. В журнале пока зафиксирована эта команда, дальнейший результат ещё собирают. Что можно отметить как назначение команды по ABI?
15Устройство поддерживает распределение MSI-X для VF. Инженер назначил часть векторов и снова читает sriov_vf_total_msix у PF. Как использовать это значение в учёте?
16Устройство не поддерживает возможность распределения MSI-X между VF, описанную в ABI Linux v6.12. Что сообщит чтение sriov_vf_total_msix?
17Драйвер поддерживает настройку отдельной VF. Положительное значение записано в sriov_vf_msix_count. Какой объект получает это количество по ABI?
18Для VF ранее изменили sriov_vf_msix_count. Теперь оператор записывает туда ноль. Какое действие задаёт эта команда?
19В рассматриваемой системе PF и VF обслуживают разные драйверы. Инженер проверяет условие доступности записи в sriov_vf_msix_count. Какая связь драйвера и устройства указана в этом условии ABI?
20В каталоге msi_irqs PCI-устройства инженер видит файл с номером в имени и значением msix. Как перенести эти сведения в акт?

Следующий шаг

Сформулируйте задачу, затем уточните требования перед выбором оборудования.

Разобрать свою задачу с Делектусом

Откроется черновик вопроса. Отправьте его, когда будете готовы.

Проверяемая база

Источники курса

Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.

  • Официальная документация

    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; дата тегирования задаёт редакцию. Страниц в оригинале нет.

    Открыть первоисточник
  • Официальная документация

    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; дата тегирования задаёт редакцию. Страниц в оригинале нет.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие