У меня материнская плата MSI-GD65 Gaming и Intel i7 4790. VT-D включен в разделе BIOS "Характеристики процессора".
Я использую Ubuntu 14.04.1 LTS, и когда я пытаюсь отсоединить устройство, я получаю следующее сообщение:
# virsh nodedev-detach pci_0000_00_1f_2
ошибка: не удалось отсоединить устройство pci_0000_00_1f_2 ошибка: операция не поддерживается: ни VFIO, ни назначение устройств KVM в настоящее время не поддерживаются в этой системе
Dmesg включает некоторую информацию о IOMMU, но я не могу сказать, означает ли это, что VT-D включен
$ dmesg | grep -i iommu
[0.027450] dmar: IOMMU 0: reg_base_addr fed90000 ver 1: 0 cap c0000020660462 ecap f0101a
[0.027455] dmar: IOMMU 1: reg_base_addr fed91000 ver 1: 0 cap d2008020660462 ecap f010da
[0.027521] IOAPIC id 8 в базе DRHD 0xfed91000 IOMMU 1
Может ли кто-нибудь посоветовать, что мне нужно сделать, чтобы включить VT-D в этой системе и передать через устройства PCI гостевым KVM?
Решение этой проблемы - включить IOMMU в параметрах загрузки GRUB.
Вы можете сделать это, установив следующее в / etc / default / grub
GRUB_CMDLINE_LINUX_DEFAULT = "intel_iommu = on"
Если вы используете процессор AMD, вам следует добавить amd_iommu=on
вместо этого к параметрам загрузки
GRUB_CMDLINE_LINUX_DEFAULT = "тихий всплеск amd_iommu = on"
Тогда беги update-grub
и перезагрузить
Эта ссылка мне немного помогла: https://www.centos.org/forums/viewtopic.php?f=47&t=48115
Смотрите также: https://pve.proxmox.com/wiki/Pci_passthrough
Это несколько ускользнуло от меня, так как я считал iommu альтернативой AMD VT-D.
Добавление к ответу Anonymouslemming: похоже, в Ubuntu (18.04 для меня) есть ошибка, из-за которой параметр GRUB_CMDLINE_LINUX_DEFAULT в / etc / default / grub игнорируется.
Это можно исправить, закомментировав GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub.d/50-curtin-settings.cfg
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1569567
Похоже, у вас есть требования к оборудованию, потому что его использует другой модуль (IOAPIC). В этом случае вам нужно просто настроить программное обеспечение.
Похоже, вам нужно убедиться, что у вас установлены все предварительные условия для поддержки отключения соответствующего устройства. Похоже, у вас их не установлено или они не настроены.
Прежде чем пытаться использовать их в подобном случае, вам необходимо установить и инициализировать соответствующие библиотеки и модули ядра. Это будут различные системные утилиты "хоста" и модули ядра для вашей установки KVM.
Вам необходимо прочитать раздел руководства о том, как правильно настроить подходящее решение KVM, и выполнить эти шаги, прежде чем пытаться просто запустить утилиты. Они не устанавливаются просто при первом запуске только потому, что установлены необходимые пакеты.
Обратите внимание: если рассматриваемое устройство встроено в материнскую плату, технически это может быть не устройство PCI, а устройство с сопоставлением PCI. Эти устройства фактически подключаются другими способами, но с помощью их BIOS сопоставляются с пространством PCI BIOS. Они могут или могут быть несовместимы с отсоединением устройства, в зависимости от различных аспектов их подключения к системе.
Кроме того, вы не сможете отсоединить подустройства без отсоединения родительских устройств, если их драйверы взаимозависимы. Вы можете отсоединять устройства только с абсолютной уверенностью, чье родительское устройство является контроллером PCI, мостом PCI или каким-либо другим поддерживаемым контроллером шины или мостом.
Я на centos7
У меня была эта ошибка, которая привела меня сюда, но моя проблема заключалась не в обновлении (в моем случае) vim /etc/sysconfig/grub
и добавление intel_iommu=on
до конца строки для GRUB_CMDLINE_LINUX
Мне пришлось запустить эту команду
grub2-mkconfig -o /boot/grub2/grub.cfg
затем перезагрузите
примечание: я также запускал grub2-mkconfig с перезагрузкой перед приведенной выше командой, и это не помогло мне из того, что я видел.
ссылка: https://bugzilla.redhat.com/show_bug.cgi?id=1269446
Комментарий 11 и 12