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

IOMMU

Определение

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

Также ищут: I/O Memory Management Unit · Input-Output Memory Management Unit · модуль управления памятью ввода-вывода

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

Отметка IOMMU в характеристиках сервера ещё не доказывает, что нужный адаптер можно безопасно передать виртуальной машине. Граница изоляции зависит от устройства и топологии PCIe, а программный стек должен уметь использовать эту возможность.

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

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

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

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

  1. IOMMU переводит адреса DMA устройств; современные реализации могут также изолировать устройства друг от друга и от произвольного доступа к памяти.

    Граница применимости: Linux VFIO 6.12 описывает многие современные IOMMU. Изоляция не объявляется свойством любой исторической реализации.

  2. VFIO использует защиту IOMMU, чтобы предоставить пользовательскому процессу прямой доступ к устройству; назначение устройства виртуальной машине — один из таких сценариев.

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

  3. Граница изоляции IOMMU не всегда совпадает с одним PCIe-устройством: свойства устройства, моста и топологии могут объединить несколько функций в одну границу.

    Граница применимости: Linux VFIO 6.12, раздел Groups, Devices, and IOMMUs. Фактическая граница зависит от конкретной платформы.

  4. В IOMMUFD пространство IOAS хранит соответствие IOVA областям памяти; ограничения подключённых устройств могут сужать допустимый диапазон IOVA.

    Граница применимости: Linux IOMMUFD 6.12. Это свойство Linux userspace API и не описывает интерфейсы других ОС.

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

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

  1. Проверьте, что IOMMU действительно доступна и используется выбранной платформой.
  2. Посмотрите состав IOMMU-группы нужного устройства, а не только его адрес PCIe.
  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, а не универсальный интерфейс любой платформы.

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

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

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

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

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

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

Спасибо!

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