Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
AMD-Vi: Event logged [IO_PAGE_FAULT device=... domain=...] Linux / DevOps

AMD-Vi: Event logged IO_PAGE_FAULT — Решение ошибок IOMMU AMD в Linux

Обновлено: 18.08.2026  ·  Официальная база знаний

Архитектура ошибки и симптомы сбоя

Сообщение «AMD-Vi: Event logged [IO_PAGE_FAULT device=... domain=... address=... flags=...]» генерируется подсистемой ядра AMD-Vi (AMD I/O Virtualization Technology) на процессорах AMD EPYC, Threadripper и Ryzen. Ошибка указывает на то, что аппаратный контроллер IOMMU AMD зафиксировал попытку PCIe-устройства обратиться по адресу виртуальной памяти I/O (IOVA), для которого отсутствует валидная трансляция в таблице страниц IOMMU, либо нарушены права доступа (Read/Write/Execute).

Диагностическая таблица параметров сбоя

ПараметрЗначениеИнженерный смысл сбоя
AMD-ViAMD IOMMU ArchitectureАппаратная технология виртуализации ввода-вывода и изоляции памяти процессоров AMD.
IO_PAGE_FAULTPage Translation MissУстройство запросило чтение/запись по несмаппированному адресу памяти.
flags (PR / PW)Protection Read/WriteФлаги указывают, было ли прервано чтение (PR) или запись (PW) данных.

Пошаговое дерево решений и сценарии траблшутинга

Сценарий 1: Локализация виновника сбоя по BDF и анализ IOMMU групп

# Локализация устройства из строки ошибки (например, device=0000:21:00.0):
lspci -s 21:00.0 -v

# Проверка журнала ошибок AMD-Vi:
dmesg -T | grep -A 3 -B 3 "AMD-Vi: Event logged"

Сценарий 2: Оптимизация параметров ядра amd_iommu в GRUB

Добавьте параметры принудительного сквозного режима и исправления ошибок страничной адресации IOMMU:

# Добавьте в /etc/default/grub:
GRUB_CMDLINE_LINUX="iommu=pt amd_iommu=on amd_iommu_intr=vapic iommu.passthrough=1"

# Обновите конфигурацию GRUB:
sudo update-grub
sudo reboot

Сценарий 3: Обновление микрокода CPU (AGESA / microcode)

На процессорах AMD EPYC и Ryzen ошибки AMD-Vi часто вызваны багами ранних версий AGESA BIOS:

# Установка пакета микрокодов для процессоров AMD:
sudo apt-get install amd64-microcode || sudo dnf install microcode_ctl

# Проверка версии загруженного микрокода:
cat /proc/cpuinfo | grep -m 1 "microcode"
Падения серверов на AMD EPYC при пробросе накопителей NVMe?
ITSTM проводит аудит серверов на базе AMD EPYC/Ryzen, обновление прошивок BIOS/BMC и тонкую настройку подсистем SR-IOV/IOMMU.
Практический опыт инженера: На материнских платах для AMD EPYC (Supermicro H11/H12, ASRock Rack) обязательно отключайте опцию 'IOMMU Memory Mappings above 4GB' в режим Auto/Enabled и активируйте 'SR-IOV Support' в BIOS для корректной генерации таблиц IVRS.

Частые вопросы (FAQ)

Чем AMD-Vi отличается от Intel VT-d?

AMD-Vi и Intel VT-d — это реализации одной концепции IOMMU от разных производителей. AMD-Vi использует двухуровневую трансляцию адресов и таблицы Device Table с собственной структурой дескрипторов страниц IOVA.

Что означает флаг vapic в параметре amd_iommu_intr=vapic?

Опция vapic активирует виртуализацию контроллера прерываний Advanced Programmable Interrupt Controller (vAPIC) на процессорах AMD, что снижает нагрузку на гипервизор при маршрутизации прерываний IOMMU.

Почему IO_PAGE_FAULT сыплет тысячами сообщений в секунду?

Если контроллер сетевой карты или NVMe застрял в цикле DMA-передачи, он повторяет неудачные запросы непрерывно. Для подавления спама в dmesg временно используйте параметр amd_iommu_dump=0.

Может ли включение IOMMU снижать скорость работы быстрых NVMe накопителей?

Да, полная трансляция страниц IOMMU добавляет небольшую задержку (1-3%) на каждую операцию DMA. Использование режима iommu=pt полностью нивелирует эту просадку.