IOMMU в BIOS MSI: полное руководство по включению и настройке

Если вы зашли в BIOS материнской платы MSI и увидели пункт IOMMU, но не знаете, что с ним делать — вы не одиноки. Чаще всего этот параметр ищут пользователи, которые планируют настраивать виртуальные машины с пробросом видеокарты (GPU Passthrough) или используют гипервизоры вроде Proxmox и ESXi. Без включенного IOMMU виртуальная машина просто не получит прямой доступ к физическому устройству, и вся затея с пробросом GPU закончится ошибкой при старте.

В материнских платах MSI параметр IOMMU находится в разделе Advanced → PCI Subsystem Settings или Advanced → AMD CBS (для процессоров AMD). На платах Intel аналогичная функция называется VT-d и располагается в Overclocking → CPU Features или Advanced → System Agent Configuration. Включение этой опции — обязательный шаг для работы с аппаратной виртуализацией на уровне ввода-вывода.

Что такое IOMMU и зачем он нужен

IOMMU (Input/Output Memory Management Unit) — это технология, которая позволяет операционной системе контролировать доступ устройств ввода-вывода к оперативной памяти. Грубо говоря, это аналог MMU (блока управления памятью для процессора), но только для периферийных устройств: сетевых карт, контроллеров NVMe, видеокарт и USB-контроллеров.

Без IOMMU любое устройство может писать в любую область физической памяти. Это не только создает риски безопасности, но и делает невозможной изоляцию устройств между виртуальными машинами. Когда IOMMU включен, каждое устройство получает свою изолированную область памяти через таблицы переадресации.

Для обычного пользователя IOMMU не дает видимого прироста производительности в играх или рабочих приложениях. Его ценность раскрывается в двух сценариях: запуск виртуальных машин с прямым доступом к железу и защита системы от DMA-атак (когда злоумышленник подключает устройство к PCIe-порту и читает память).

Отличия IOMMU на платформах AMD и Intel

На материнских платах MSI для процессоров AMD параметр называется IOMMU, а для Intel — VT-d (Virtualization Technology for Directed I/O). Это разные реализации одной и той же идеи, но настройки в BIOS отличаются.

На платформе AMD в BIOS MSI обычно доступны два режима: Auto и Enabled. В режиме Auto система сама решает, включать ли IOMMU, но для гарантированной работы лучше выставить Enabled. Дополнительно на некоторых платах есть параметр IOMMU Mode — он отвечает за формат таблиц переадресации. Для Linux-систем выбирайте AMD-Vi, для Windows — оставьте значение по умолчанию.

На платформе Intel в BIOS MSI нужно искать VT-d в разделах Advanced → System Agent Configuration или Overclocking → CPU Features. Параметр имеет только два состояния — Enabled и Disabled. Также проверьте, что в соседнем пункте VT-x (виртуализация процессора) стоит Enabled — без него VT-d не заработает.

Платформа Название параметра в BIOS MSI Расположение в BIOS Дополнительные настройки
AMD (Ryzen, Threadripper) IOMMU Advanced → PCI Subsystem Settings IOMMU Mode (AMD-Vi / Auto)
Intel (Core, Xeon) VT-d Advanced → System Agent Configuration VT-x (обязателен)
AMD (старые платы MSI) IOMMU Advanced → AMD CBS → NBIO IOMMU Mode / AER
Intel (платы MSI с OC-разделом) VT-d Overclocking → CPU Features VT-x, Above 4G Decoding

Пошаговая инструкция для плат MSI на AMD

Для включения IOMMU на материнской плате MSI с процессором AMD зайдите в BIOS, нажав клавишу Delete при загрузке компьютера. Если не получается — попробуйте F2 или F11. После входа переключите BIOS в расширенный режим клавишей F7 — иначе вы не увидите нужных разделов.

Далее следуйте по пути: Advanced → PCI Subsystem Settings → найдите строку IOMMU и переключите ее в состояние Enabled. На некоторых платах MSI этот параметр может называться IOMMU Support или находиться глубже — в Advanced → AMD CBS → NBIO Common Options.

После изменения нажмите F10 для сохранения и перезагрузки. Войдите в систему и проверьте, что IOMMU активен. В Linux выполните команду dmesg | grep -i iommu — вы должны увидеть строки с упоминанием AMD-Vi. В Windows откройте диспетчер устройств и убедитесь, что в разделе «Системные устройства» появился контроллер AMD IOMMU.

☑️ Проверка включения IOMMU на MSI AMD

Выполнено: 0 / 7

Настройка VT-d на материнских платах MSI для Intel

На платах Intel процесс включения похож, но путь в BIOS отличается. Зайдите в Advanced → System Agent Configuration и найдите пункт VT-d. Переключите его в Enabled. На некоторых моделях MSI (например, серии MEG) этот параметр лежит в Overclocking → CPU Features.

Обязательно проверьте, что рядом включен VT-x — без него технология направленного ввода-вывода не активируется. На платах MSI VT-x может называться Intel Virtualization Technology или SMX — это разные параметры, и нужен именно VT-x.

Дополнительно для корректной работы GPU Passthrough на Intel может потребоваться включить Above 4G Decoding в разделе Advanced → PCI Subsystem Settings. Этот параметр позволяет BIOS выделять адресное пространство выше 4 ГБ для PCIe-устройств, что критично при пробросе видеокарт в виртуальные машины.

⚠️ Внимание: на некоторых материнских платах MSI параметр VT-d скрыт и появляется только после включения VT-x. Если вы не находите VT-d в BIOS, сначала включите виртуализацию процессора, сохраните настройки и перезайдите в BIOS — пункт должен появиться.

Ошибки при включении IOMMU и их решение

Самая распространенная проблема — после включения IOMMU система не загружается или зависает на логотипе MSI. В большинстве случаев это связано с несовместимостью режима IOMMU с установленным оборудованием. Попробуйте переключить IOMMU Mode с Auto на AMD-Vi или наоборот.

Вторая частая ошибка — IOMMU включен, но Linux его не видит. Причина обычно в параметрах загрузки ядра. Добавьте в конфигуратор GRUB строку amd_iommu=on iommu=pt для AMD или intel_iommu=on iommu=pt для Intel. После обновления конфигурации (update-grub) перезагрузитесь.

Третья проблема — устройство не пробрасывается в виртуальную машину, хотя IOMMU активен. Проверьте, что группа IOMMU содержит только нужное устройство. В Linux выполните lspci -nnk | grep -A2 VGA и посмотрите, какие устройства попали в одну группу. Если видеокарта находится в одной группе с контроллером HDMI или звуковой картой, придется пробрасывать всю группу целиком.

📊 С какой проблемой вы столкнулись при включении IOMMU?
Система не загружается после включения
IOMMU не виден в Linux
GPU Passthrough не работает
Не могу найти параметр в BIOS

Влияние IOMMU на производительность и безопасность

Включение IOMMU не снижает производительность в играх или рабочих приложениях. Современные процессоры AMD и Intel обрабатывают таблицы переадресации аппаратно, поэтому оверхед составляет доли процента. В синтетических тестах разница между включенным и выключенным IOMMU обычно не превышает 1–2%.

Однако есть сценарий, где IOMMU может немного снизить скорость — это передача больших объемов данных через NVMe-накопители или сетевые карты 10 Гбит/с. В этом случае каждая DMA-операция проходит через таблицу переадресации, что добавляет задержку. На практике это заметно только в бенчмарках, а не в реальной работе.

С точки зрения безопасности IOMMU критически важен. Он предотвращает DMA-атаки, когда злоумышленник подключает устройство к PCIe-порту (например, через Thunderbolt) и получает доступ ко всей физической памяти. Без IOMMU любое PCIe-устройство может читать и писать в память без ограничений.

Проверка работы IOMMU в операционных системах

После включения IOMMU в BIOS MSI нужно убедиться, что операционная система действительно использует эту технологию. В Linux проверка выполняется тремя командами. Первая — dmesg | grep -i -e DMAR -e IOMMU — покажет, обнаружило ли ядро контроллер IOMMU. Вторая — find /sys/kernel/iommu_groups -maxdepth 1 -type d — выведет список групп IOMMU, если технология активна.

В Windows проверка проще. Откройте диспетчер устройств (Win + X → «Диспетчер устройств») и разверните раздел «Системные устройства». Если IOMMU включен, вы увидите записи AMD IOMMU или Intel VT-d. Также можно использовать утилиту msinfo32 — в разделе «Сведения о системе» найдите строку «Преобразование адресов ввода-вывода» со значением «Виртуализация на основе ввода-вывода».

⚠️ Внимание: если в Windows IOMMU не отображается после включения в BIOS, проверьте, что в настройках системы не активирован режим Secure Boot с ограничениями на загрузку драйверов. Некоторые сборки Windows блокируют загрузку драйвера IOMMU при включенном Secure Boot.

# Проверка IOMMU в Linux

dmesg | grep -i -e DMAR -e IOMMU

ls /sys/kernel/iommu_groups/ | wc -l

Особенности IOMMU для GPU Passthrough

Если вы включаете IOMMU для проброса видеокарты в виртуальную машину, одного параметра в BIOS недостаточно. На платах MSI потребуется также отключить CSM (Compatibility Support Module) и включить Above 4G Decoding в разделе Settings → Boot. Без этого видеокарта может не определиться в виртуальной машине.

Для AMD-платформ с процессорами Ryzen дополнительно рекомендуется отключить Resizable BAR (Re-Size BAR Support) в разделе Advanced → PCI Subsystem Settings. Эта функция конфликтует с пробросом GPU, особенно при использовании гипервизора Proxmox. На Intel-платформах аналогичная настройка называется Above 4G Decoding и ее нужно, наоборот, включить.

Также учтите, что для проброса видеокарты в Linux-гипервизор потребуется изолировать устройство от хост-системы. Для этого добавьте в параметры загрузки ядра строку vfio-pci.ids=XXXX:XXXX, где XXXX:XXXX — идентификатор вашей видеокарты из lspci -nn. Без этого хост-система захватит GPU при загрузке, и проброс станет невозможен.

Как найти ID видеокарты для vfio-pci

Выполните команду lspci -nn | grep VGA — вы увидите строку вида 01:00.0 VGA compatible controller [0300]: NVIDIA GA106 [GeForce RTX 3060] [10de:2503]. Запишите идентификатор в формате 10de:2503 — это и есть vendor:device ID, который нужно указать в параметрах ядра.

Частые вопросы о IOMMU в BIOS MSI

IOMMU и SVM — это одно и то же?

Нет. SVM (Secure Virtual Machine) — это технология аппаратной виртуализации AMD, аналог Intel VT-x. IOMMU — отдельная технология для управления доступом устройств к памяти. Для работы виртуальных машин нужны обе: SVM для виртуализации процессора, IOMMU для проброса устройств. В BIOS MSI SVM находится в Advanced → CPU Configuration.

Нужно ли включать IOMMU, если я не использую виртуализацию?

Для повседневной работы — нет. Если вы не запускаете виртуальные машины с пробросом устройств, IOMMU не даст видимых преимуществ. Однако с точки зрения безопасности его включение полезно — оно защищает от DMA-атак. Включенный IOMMU не снижает производительность, поэтому его можно оставить активным постоянно.

Почему IOMMU не работает на моей плате MSI B450?

На платах B450 (и других чипсетах AMD) параметр IOMMU может быть скрыт, если в системе установлен процессор с интегрированной графикой (например, Ryzen 3200G). В этом случае попробуйте обновить BIOS до последней версии с сайта MSI. Если проблема осталась, проверьте, что в AMD CBS → NBIO параметр IOMMU не заблокирован.

Можно ли включить IOMMU на ноутбуке MSI?

Да, на большинстве игровых ноутбуков MSI (серии GP, GE, GT) параметр IOMMU или VT-d доступен в BIOS. Однако на ноутбуках часто нет разделов AMD CBS или System Agent Configuration. Ищите параметр в Advanced → System Agent или Advanced → Miscellaneous. На некоторых моделях он скрыт и требует нажатия Ctrl + S в BIOS для отображения скрытых настроек.

Включение IOMMU в BIOS материнских плат MSI — простая процедура, которая открывает доступ к продвинутой виртуализации и повышает безопасность системы. На платформах AMD ищите параметр в Advanced → PCI Subsystem Settings, на Intel — в Advanced → System Agent Configuration. После включения обязательно проверьте работу технологии в операционной системе и при необходимости добавьте параметры загрузки ядра.

Если после настройки IOMMU система перестала загружаться, сбросьте BIOS через перемычку CMOS на материнской плате или через функцию Load Optimized Defaults в самом BIOS. В большинстве случаев проблема решается переключением режима IOMMU или отключением конфликтующих параметров вроде Resizable BAR. Для сложных конфигураций с GPU Passthrough изучите документацию вашего гипервизора — там приведены точные параметры ядра для вашего оборудования.