VFIO
Определение
VFIO — подсистема Linux для прямого доступа к устройствам из пользовательского пространства с защитой IOMMU. Её используют, например, чтобы назначать физическое устройство виртуальной машине.
Также ищут: Virtual Function I/O · VFIO framework
Зачем это знать
VFIO не делает любую PCIe-плату автоматически пригодной для проброса. Перед использованием проверяют IOMMU, состав группы, владение соседними устройствами и поддержку точной конфигурации гипервизором и гостевой системой.
Карта понятия
Связано
Что подтверждено
VFIO — независимая от конкретного IOMMU и устройства подсистема Linux, которая предоставляет пользовательскому пространству прямой доступ к устройству в среде, защищённой IOMMU.
Граница применимости: Linux VFIO 6.12. Формулировка относится к VFIO и не описывает интерфейсы прямого доступа других ОС.
Назначение физического устройства виртуальной машине — один из основных сценариев прямого доступа через VFIO.
Граница применимости: Linux VFIO 6.12. Сам факт наличия VFIO не подтверждает поддержку конкретного устройства, гостя или миграции.
В legacy-модели VFIO работа идёт через IOMMU-группу; если в ней несколько устройств, группа должна быть подготовлена целиком до разрешения операций.
Граница применимости: Linux VFIO 6.12, legacy group/container interface. Новый cdev имеет другой API, но сохраняет групповую семантику владения.
В модели VFIO device cdev устройство нужно привязать к iommufd и установить владение DMA до полноценного доступа и настройки DMA.
Граница применимости: Linux VFIO 6.12, VFIO Device cdev. Требование относится к этому интерфейсу Linux.
Устройства одной IOMMU-группы нельзя одновременно разделить между разными iommufd-контекстами или между VFIO и обычным драйвером, потому что у группы один владелец DMA.
Граница применимости: Linux VFIO 6.12, VFIO Device cdev. Конкретная ошибка и управление драйверами зависят от реализации.
Что проверить
- Проверьте IOMMU и состав группы целевого устройства.
- Освободите от обычных драйверов только те устройства, которые разрешено передавать, по поддержанной процедуре.
- Сверьте поддержку точной платы, ядра, гипервизора и гостевой ОС.
- После настройки проверьте устройство внутри гостя и отдельно сценарии перезапуска и обслуживания.
Первоисточники
- VFIO - “Virtual Function I/O”
Проверены назначение VFIO, роль IOMMU, границы IOMMU-групп, legacy group interface и device cdev. Документ описывает Linux 6.12; поведение других ОС и гипервизоров отдельно не подтверждается.
- IOMMUFD
Проверены IOAS, отображение IOVA в память, владение DMA и влияние ограничений подключённых устройств. Это Linux userspace API, а не универсальный интерфейс любой платформы.
Связанные понятия
Курсы по теме
Следующий шаг
Сформулируйте задачу и уточните требования к своей системе.
Подготовить состав проектаОткроется черновик вопроса. Отправьте его, когда будете готовы.