ฉันจะเปิดใช้งานอุปกรณ์ KVM passthrough ใน Linux ได้อย่างไร


13

ฉันมีมาเธอร์บอร์ด MSI-GD65 Gaming และ Intel i7 4790 VT-D ถูกเปิดใช้งานในส่วนคุณสมบัติ CPU ของไบออส

ฉันใช้ 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 หมวก c0000020660462 ecap f0101a
[0.027455] dmar: IOMMU 1: 0 cap d2008020660462ap f010da921fm1
[ID271]

ทุกคนสามารถให้คำแนะนำสิ่งที่ฉันต้องทำเพื่อเปิดใช้งาน VT-D ในระบบนี้และส่งผ่านอุปกรณ์ PCI ไปยังแขกของ KVM ได้ไหม?


คุณได้ทำ powercycle อย่างเต็มรูปแบบหลังจากเปิดใช้งาน VT และ VT-d แล้วหรือยัง
dyasny

คำตอบ:


11

วิธีแก้ไขปัญหานี้คือเปิดใช้งาน IOMMU ในพารามิเตอร์การบูต GRUB ของคุณ

คุณสามารถทำได้โดยการตั้งค่าต่อไปนี้ใน / etc / default / grub

GRUB_CMDLINE_LINUX_DEFAULT = "intel_iommu = on"

หากคุณใช้โปรเซสเซอร์ 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


และถ้ามันไม่ทำงาน CPU ของคุณอาจไม่สนับสนุน VT-D หรือ AMD-VI (คำถามทำให้ชัดเจน - ฉันโพสต์ที่นี่เพื่อคนอื่น ๆ )
2559 เวลา 16:01

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 Bridge หรือบัสคอนโทรลเลอร์หรือบริดจ์ที่รองรับอื่น ๆ


ขอบคุณสำหรับข้อมูล. ฉันเดาว่าคำถามของฉันควรมี "ฉันจะหาเอกสารสำหรับการทำสิ่งนี้ใน 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.