Вопрос или проблема
Я пытаюсь настроить GPU Passthrough с Ubuntu 24.04 LTS, используя KVM на HP Proliant DL360 Gen 9. Видеокарта, которую я использую, это NVIDIA GeForce 730. Ubuntu распознает видеокарту, когда я использую “lspci | grep NVIDIA”.
Я попробовал 20 или 25 учебников в интернете, и ни один из них, похоже, не работает. Все эти учебники приводят к этой ошибке:
“vfio 0000:11:00.0: не удалось настроить контейнер для группы 32: Не удалось установить контейнер группы: Неправильный аргумент”
и также в dmesg:
“vfio-pci 0000:11:00.1: прошивка запросила, чтобы это устройство имело 1:1 сопоставление IOMMU, отклоняя конфигурацию устройства без сопоставления 1:1. Свяжитесь с вашим поставщиком платформы”
Что я попробовал:
- Проверил, включена ли виртуализация, и она включена
- Включил IOMMU в /etc/default/grub
- Настроил grub, чтобы исключить драйвер и устройство из хоста, чтобы оно могло использоваться виртуальной машиной
- Видеокарта была добавлена в группу IOMMU 32 с ID 0000:11:00.1
lsmod | grep vfio:
vfio_pci 16384 0
vfio_pci_core 94208 1 vfio_pci
vfio_iommu_type1 49152 0
vfio 73728 3 vfio_pci_core,vfio_iommu_type1,vfio_pci
iommufd 98304 1 vfio
irqbypass 12288 2 vfio_pci_core,kvm
lspci -nnk:
11:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK208B [GeForce GT 730] [10de:1287] (rev a1)
Подсистема: ASUSTeK Computer Inc. GK208B [GeForce GT 730] [1043:881a]
Используемый драйвер ядра: vfio-pci
Модули ядра: nvidiafb, nouveau
11:00.1 Аудиоустройство [0403]: NVIDIA Corporation GK208 HDMI/DP Audio Controller [10de:0e0f] (rev a1)
Подсистема: ASUSTeK Computer Inc. GK208 HDMI/DP Audio Controller [1043:881a]
Используемый драйвер ядра: vfio-pci
Модули ядра: snd_hda_intel
dmesg | grep -i -e DMAR -e IOMMU
[1.590590] DMAR: Intel(R) Virtualization Technology for Directed I/O
[64028.365834] vfio-pci 0000:11:00.1: прошивка запросила, чтобы это устройство имело 1:1 сопоставление IOMMU, отклоняя конфигурацию устройства без сопоставления 1:1. Свяжитесь с вашим поставщиком платформы.
/etc/default/grub:
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`( . /etc/os-release; echo ${NAME:-Ubuntu} ) 2>/dev/null || echo Ubuntu`
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on iommu=pt kvm.ignore_msrs=1"
GRUB_CMDLINE_LINUX=""
Учебники, которые я использовал, все заканчиваются одной и той же ошибкой (некоторые из них были на AlmaLinux):
- Виртуализация – Ubuntu 22
- Server-World – GPU Passthrough
- Руководство для начинающих по GPU Passthrough
- Github – GPU Passthrough
- Luus.is – GPU Passthrough
- Red Hat GPU Passthrough
- Wiki Gentoo – GPU Passthrough
Когда я ищу эту ошибку прошивки в dmesg, она показывает только темы Proxmox, и они предлагают новый ядро Proxmox в качестве решения, но я не использую Proxmox, так что решения для меня нет. Что я делаю не так? Я действительно на грани нервного срыва. Заранее спасибо.
Р.S. Я не очень знаком с GPU/PCI Passthrough, поэтому, если я забыл предоставить какую-либо полезную информацию, дайте знать.
Мне удалось самостоятельно решить эту проблему. Я использовал оборудование другой марки, и теперь все работает как часы.
Ответ или решение
Проблема с GPU Pass-through в Ubuntu 24.04: Ошибка "Firmware has requested this device have a 1:1 IOMMU mapping"
Постановка проблемы:
Недавно я столкнулся с проблемой при настройке GPU Pass-through на Ubuntu 24.04 LTS с использованием KVM на сервере HP Proliant DL360 Gen 9 и видеокарте NVIDIA GeForce 730. После ряда попыток и следования множеству руководств, я столкнулся с ошибками, связанными с конфигурацией IOMMU.
Ошибки и диагностические сообщения:
- Ошибка vfio:
vfio 0000:11:00.0: failed to setup container for group 32: Failed to set group container: Invalid argument
- Сообщение dmesg:
vfio-pci 0000:11:00.1: Firmware has requested this device have a 1:1 IOMMU mapping, rejecting configuring the device without a 1:1 mapping. Contact your platform vendor.
Следующие команды предоставили полезную информацию:
- lsmod | grep vfio — показывало правильно загруженные модули vfio.
- lspci -nnk — подтверждало, что видеокарта распознаётся, но используется драйвер vfio-pci.
- dmesg | grep -i -e DMAR -e IOMMU — указывало на проблемы с IOMMU.
Проверенные шаги:
- Убедился, что виртуализация включена в BIOS.
- Активировал IOMMU в файле
/etc/default/grub
:GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on iommu=pt kvm.ignore_msrs=1"
- Убедился, что видеокарта добавлена в группу IOMMU 32 с ID 0000:11:00.1.
Возможные решения:
-
Проверка конфигурации системы:
- Убедитесь, что ваше оборудование поддерживает IOMMU и что оно включено в настройках BIOS.
- Для некоторых платформ может потребоваться изменение параметров BIOS, таких как VT-d для процессоров Intel.
-
Использование другого оборудования:
- Как показала практика, использование другого аппаратного обеспечения (например, видеокарт другой марки или модели) помогло решить проблему. Это может быть связано с особенностями прошивки или несовместимостью конкретных устройств с IOMMU.
-
Обновление прошивки/ядра:
- Если у вас есть возможность, обновите прошивку BIOS и ядро вашей системы до последней стабильной версии. Это может устранить известные проблемы с совместимостью.
-
Пересмотр конфигурации grub:
- Попробуйте изменить параметры grub для исключения других драйверов, которые могут конфликтовать с vfio-pci. Это можно сделать, добавив
modprobe.blacklist=nvidia,nouveau
.
- Попробуйте изменить параметры grub для исключения других драйверов, которые могут конфликтовать с vfio-pci. Это можно сделать, добавив
-
Отладка IOMMU групп:
- Используйте команды
find /sys/kernel/iommu_groups/ -type l
для анализа групп IOMMU и их конфигурации. Убедитесь, что все необходимые устройства находятся в одной группе.
- Используйте команды
Заключение:
В вашем случае проблема была решена путем использования оборудования другой марки, что указывает на возможные несовместимости существующих конфигураций. Важно помнить, что GPU Passthrough может потребовать значительных усилий и экспериментов для достижения правильной конфигурации. Не теряйте надежду и продолжайте исследовать различные варианты конфигурации, а также проверяйте обновления и документацию производителей для получения актуальной информации о поддержке.