PCIe passthrough/SR-IOV 啟用

grub部分: 點我前往

nano /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
kvmgt

update-initramfs -u -k all

注意要點

  • 如果你的主板沒有開啟 Intel VT-D 或 AMD-VI (IOMMU) 以及可以開啟 SR-IOV 的選項時, 代表了你的"硬體平台非常有可能 (99.9%) 不支援"
  • 所有在"同一個" iommu group 下面的 device, "需要一起 " passthrough 給 vm. 所以主板的 PCH 以及 PCI-E 設備的 firmware 一定要寫的夠好, 才能這樣子 passthrough.
  • Intel/Mellanox/NVidia passthrough 的成功比率比較好. 伺服器主板的話, x9/x10/x11 系列都可以做到. 越舊然後便宜的主板 PCH Root 不夠使用, passthrough 機率非常低.
  • 需要passthrough 的 pci-e device, 它們需要使用 vfio_pci 的驅動, 而不可以使用原本 igb-vf 的驅動, 那樣子硬體就被 host 拿去使用了, 而 vm guest 就無法使用.

VM端設定:

nano /etc/pve/qemu-server/XXX.conf

增加:
cpu: host
hostpci0: 03:00.1,pcie=1
hostpci1: 08:10.0,pcie=1
#當無法開機跳出不正確pcie id時 改為
hostpci0: 0000:03:00.1,pcie=1
machine: q35

註:伺服器部分或者做完之後沒有生效者請增加

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
update-initramfs -u

後重開機即可使用

GPU設定: GPU Passthrough

GVT-g注意事項:

Create VGPU (KVMGT only)
Use the uuid you generated to create VGPU, notes: if you want to boot up multi guests, you can use echo "uuid" > "/sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V#ID_#Type/create", like below:
echo "a297db4a-f4c2-11e6-90f6-d3b88d6c9525" > "/sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_4/create"

查詢啟用:

dmesg | grep IOMMU | grep enabled

Intel SR-IOV

echo /etc/modprobe.d/igb.conf >>  options igb max_vfs=2,4
depmod -a
update-initramfs -u

LXC SR-IOV 啟用:

lxc.autodev = 1
lxc.net.0.type = phys # was veth
lxc.network.flags = up
lxc.network.link = enp4s16f1 # was virbr0

NVIDIA GPU Passthrough FIX

proxmox 6 NVIDIA GPU passthrough fix

阅读剩余
THE END