Bagaimana cara mengaktifkan perangkat KVM passthrough di Linux?

13

Saya memiliki motherboard MSI-GD65 Gaming dan Intel i7 4790. VT-D diaktifkan di bagian Fitur CPU pada bios.

Saya menjalankan Ubuntu 14.04.1 LTS dan ketika saya mencoba dan melepaskan perangkat, saya mendapatkan pesan berikut:

# virsh nodedev-detach pci_0000_00_1f_2

kesalahan: Gagal melepaskan perangkat kesalahan pci_0000_00_1f_2: Operasi tidak didukung: baik penugasan perangkat VFIO maupun KVM saat ini didukung pada sistem ini

Dmesg menyertakan beberapa informasi tentang IOMMU tetapi saya tidak tahu apakah ini berarti VT-D diaktifkan

$ 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 ver 1: 0 cap d2008020660462 ecap f010da di
bawah IMD basis IM07

Adakah yang bisa menyarankan apa yang harus saya lakukan untuk mengaktifkan VT-D pada sistem ini dan melewati perangkat PCI ke tamu KVM?

Membuat anonim
sumber
Sudahkah Anda melakukan siklus daya penuh setelah mengaktifkan VT dan VT-d?
dyasny

Jawaban:

11

Solusi untuk masalah ini adalah dengan mengaktifkan IOMMU di parameter boot GRUB Anda.

Anda dapat melakukan ini dengan mengatur yang berikut ini di / etc / default / grub

GRUB_CMDLINE_LINUX_DEFAULT = "intel_iommu = on"

Jika Anda menggunakan prosesor AMD, Anda harus menambahkan amd_iommu=onparameter boot sebagai gantinya

GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash amd_iommu = on"

Kemudian jalankan update-grubdan reboot

Tautan ini sedikit membantu saya: https://www.centos.org/forums/viewtopic.php?f=47&t=48115

Lihat juga: https://pve.proxmox.com/wiki/Pci_passthrough

Ini agak menghindarkan saya karena saya percaya bahwa iommu adalah alternatif AMD untuk VT-D.

Membuat anonim
sumber
Dan jika ini tidak berhasil, CPU Anda mungkin tidak mendukung VT-D atau AMD-VI (pertanyaannya memperjelas - Saya memposting di sini untuk orang lain)
ndemou
5

Menambah jawaban Anonymouslemming: Tampaknya ada bug di Ubuntu (18,04 untuk saya), yang menyebabkan pengaturan untuk GRUB_CMDLINE_LINUX_DEFAULT di / etc / default / grub diabaikan.

Itu dapat diperbaiki dengan mengomentari GRUB_CMDLINE_LINUX_DEFAULT di /etc/default/grub.d/50-curtin-settings.cfg

https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1569567

Gila Y
sumber
1

Anda tampaknya memiliki persyaratan perangkat keras karena modul lain menggunakannya (IOAPIC). Dalam hal ini Anda hanya perlu mengatur ujung perangkat lunak.

Sepertinya Anda perlu memastikan Anda memiliki semua prasyarat yang terpasang untuk mendukung pelepasan perangkat yang sesuai. Sepertinya Anda belum menginstalnya, atau belum diatur.

Anda perlu menginstal pustaka dan modul kernel yang sesuai dan diinisialisasi sebelum Anda mencoba menggunakannya dalam kasus seperti ini. Ini akan menjadi berbagai utilitas sistem "host" dan modul kernel untuk pengaturan KVM Anda.

Anda perlu membaca bagian manual tentang cara mengatur solusi KVM yang tepat, dan ikuti langkah-langkah tersebut, sebelum Anda mencoba menjalankan utilitas. Mereka tidak hanya mengatur pada peluncuran pertama hanya karena paket yang diperlukan diinstal.

Harap dicatat, bahwa jika perangkat tersebut tertanam di motherboard, itu mungkin bukan perangkat PCI, tetapi perangkat PCI-Mapped. Perangkat ini sebenarnya terpasang dengan cara lain, tetapi dipetakan ke ruang PCI BIOS menggunakan BIOS mereka. Mereka mungkin atau mungkin tidak kompatibel dengan detasemen perangkat, tergantung pada berbagai aspek bagaimana mereka terpasang ke sistem.

Selain itu, Anda mungkin tidak dapat melepaskan sub-perangkat tanpa melepaskan perangkat induk, jika driver mereka saling bergantung. Anda hanya dapat melepaskan perangkat dengan kepastian mutlak yang perangkat induknya adalah pengontrol PCI, PCI Bridge, atau pengontrol atau jembatan Bus lain yang didukung

Robert Wm Ruedisueli
sumber
Terima kasih untuk informasi. Saya kira pertanyaan saya seharusnya termasuk "Di mana saya dapat menemukan dokumentasi untuk melakukan ini di KVM" lebih spesifik.
Anonymouslemming
0

Saya pada centos7

Saya memiliki kesalahan ini yang membawa saya ke sini tetapi masalah saya bukan dengan memperbarui (dalam kasus saya) vim /etc/sysconfig/grubdan menambahkan intel_iommu=onke akhir baris untukGRUB_CMDLINE_LINUX

Saya harus menjalankan perintah ini

grub2-mkconfig -o /boot/grub2/grub.cfg

lalu reboot

Catatan: Saya juga menjalankan grub2-mkconfig dengan reboot sebelum perintah di atas dan itu tidak melakukan apa pun untuk saya dari apa yang saya lihat.

referensi: https://bugzilla.redhat.com/show_bug.cgi?id=1269446

Komentar 11 dan 12

gstlouis
sumber