Як увімкнути перехід пристрою KVM в Linux?


13

У мене є материнська плата MSI-GD65 та Intel i7 4790. VT-D увімкнено в розділі Особливості процесора біографії.

Я запускаю 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?


Ви зробили повний силовий цикл після ввімкнення 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.


І якщо це не спрацює, ваш процесор може не підтримувати VT-D або AMD-VI (з цього питання зрозуміло - я розміщую тут інформацію для інших)
ndemou

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


1

Здається, ви маєте вимоги до апаратного забезпечення, оскільки інший модуль використовує його (IOAPIC). У цьому випадку вам потрібно просто встановити програму.

Схоже, вам потрібно переконатися, що у вас є всі необхідні умови для підтримки від'єднання відповідного пристрою. Здається, у вас їх немає, або вони не встановлені.

Перед спробою використовувати їх у такому випадку вам потрібно встановити та ініціалізувати відповідні бібліотеки та модулі ядра. Це будуть різні "хост" системні утиліти та модулі ядра для вашої настройки KVM.

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

Зауважте, що якщо відповідний пристрій вбудований у материнську плату, технічно це може бути не пристрій PCI, а пристрій із картами PCI. Ці пристрої фактично приєднані іншими способами, але відображаються у просторі PCI BIOS за допомогою їх BIOS. Вони можуть бути або не сумісні з від'єднанням пристроїв, залежно від різних аспектів того, як вони приєднані до системи.

Крім того, ви не зможете від'єднати підпристрої, не відриваючи батьківські пристрої, якщо їх драйвери взаємозалежні. Ви можете від'єднати лише пристрої з абсолютною впевненістю, хто з батьківського пристрою є контролером PCI, мостом PCI або іншим підтримуваним контролером шини або мостом


Спасибі за інформацію. Я думаю, моє запитання повинно було містити "Де я можу знайти документацію для цього в КВМ", щоб бути більш конкретною.
Анонімний

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.