Виртуализация

VFIO

Определение

VFIO — подсистема Linux для прямого доступа к устройствам из пользовательского пространства с защитой IOMMU. Её используют, например, чтобы назначать физическое устройство виртуальной машине.

Также ищут: Virtual Function I/O · VFIO framework

Зачем это знать

VFIO не делает любую PCIe-плату автоматически пригодной для проброса. Перед использованием проверяют IOMMU, состав группы, владение соседними устройствами и поддержку точной конфигурации гипервизором и гостевой системой.

Связи из словаря

Карта понятия

VFIO
Доказательная часть

Что подтверждено

  1. VFIO — независимая от конкретного IOMMU и устройства подсистема Linux, которая предоставляет пользовательскому пространству прямой доступ к устройству в среде, защищённой IOMMU.

    Граница применимости: Linux VFIO 6.12. Формулировка относится к VFIO и не описывает интерфейсы прямого доступа других ОС.

  2. Назначение физического устройства виртуальной машине — один из основных сценариев прямого доступа через VFIO.

    Граница применимости: Linux VFIO 6.12. Сам факт наличия VFIO не подтверждает поддержку конкретного устройства, гостя или миграции.

  3. В legacy-модели VFIO работа идёт через IOMMU-группу; если в ней несколько устройств, группа должна быть подготовлена целиком до разрешения операций.

    Граница применимости: Linux VFIO 6.12, legacy group/container interface. Новый cdev имеет другой API, но сохраняет групповую семантику владения.

  4. В модели VFIO device cdev устройство нужно привязать к iommufd и установить владение DMA до полноценного доступа и настройки DMA.

    Граница применимости: Linux VFIO 6.12, VFIO Device cdev. Требование относится к этому интерфейсу Linux.

  5. Устройства одной IOMMU-группы нельзя одновременно разделить между разными iommufd-контекстами или между VFIO и обычным драйвером, потому что у группы один владелец DMA.

    Граница применимости: Linux VFIO 6.12, VFIO Device cdev. Конкретная ошибка и управление драйверами зависят от реализации.

Перед спецификацией

Что проверить

  1. Проверьте IOMMU и состав группы целевого устройства.
  2. Освободите от обычных драйверов только те устройства, которые разрешено передавать, по поддержанной процедуре.
  3. Сверьте поддержку точной платы, ядра, гипервизора и гостевой ОС.
  4. После настройки проверьте устройство внутри гостя и отдельно сценарии перезапуска и обслуживания.
Открытые основания

Первоисточники

  • Документация2
  • Официальная документация
    VFIO - “Virtual Function I/O” Linux Kernel · Linux 6.12.0 documentation; VFIO; Groups, Devices, and IOMMUs; VFIO Device cdev · проверено

    Проверены назначение VFIO, роль IOMMU, границы IOMMU-групп, legacy group interface и device cdev. Документ описывает Linux 6.12; поведение других ОС и гипервизоров отдельно не подтверждается.

  • Официальная документация
    IOMMUFD Linux Kernel · Linux 6.12.0 documentation; Overview; Key Concepts; IOMMUFD User API · проверено

    Проверены IOAS, отображение IOVA в память, владение DMA и влияние ограничений подключённых устройств. Это Linux userspace API, а не универсальный интерфейс любой платформы.

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

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

Подготовить состав проекта

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

Сообщить об ошибке

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

Спасибо!

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