Как включить сквозное прохождение устройства KVM в Linux?

13

У меня есть игровая материнская плата 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 версия 1: 0 колпачка c0000020660462 ЭКАП f0101a
[0,027455] dmar: IOMMU 1: reg_base_addr fed91000 вер 1: 0 колпачка d2008020660462 ЭКАП f010da
[0,027521] IOAPIC идентификатор 8 под DRHD основанием 0xfed91000 IOMMU 1

Кто-нибудь может посоветовать, что мне нужно сделать, чтобы включить VT-D в этой системе и передать через PCI-устройства гостям KVM, пожалуйста?

Anonymouslemming
источник
Вы сделали полный цикл питания после включения VT и VT-d?
Десяный

Ответы:

11

Решением этой проблемы является включение IOMMU в параметрах загрузки GRUB.

Вы можете сделать это, установив следующее в / etc / default / grub

GRUB_CMDLINE_LINUX_DEFAULT = "intel_iommu = на"

Если вы используете процессор AMD, вы должны добавить amd_iommu=onвместо параметров загрузки

GRUB_CMDLINE_LINUX_DEFAULT = "тихий всплеск amd_iommu = вкл"

Затем запустите 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
источник
И если это не работает, ваш процессор может не поддерживать VT-D или AMD-VI (вопрос проясняет - я
публикую
5

Добавление к ответу 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

Мадс Y
источник
1

Похоже, у вас есть требования к оборудованию, потому что его использует другой модуль (IOAPIC). В этом случае вам нужно просто настроить программную часть.

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

Вам необходимо установить и инициализировать соответствующие библиотеки и модули ядра, прежде чем пытаться использовать их в подобном случае. Это будут различные системные утилиты и модули ядра для вашей установки KVM.

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

Обратите внимание, что если рассматриваемое устройство встроено в материнскую плату, технически это может быть не устройство PCI, а устройство с подключением PCI. Эти устройства на самом деле подключаются с помощью других средств, но отображаются в пространство PCI BIOS с помощью своего BIOS. Они могут или не могут быть совместимы с отсоединением устройства, в зависимости от различных аспектов их подключения к системе.

Кроме того, вы не сможете отсоединить подустройства без отсоединения родительских устройств, если их драйверы взаимозависимы. Вы можете отсоединять устройства с абсолютной уверенностью, родительским устройством которых является контроллер PCI, мост PCI или какой-либо другой поддерживаемый контроллер шины или мост

Роберт Вм Рудисуэли
источник
Спасибо за информацию. Я предполагаю, что мой вопрос должен был включать «Где я могу найти документацию для этого в KVM», чтобы быть более конкретным.
Anonymouslemming
0

Я на 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

gstlouis
источник