2022年12月27日 星期二

PVE | 分配第二張GPU時無法啟動VM,failed to open /dev/vfio/1: Device or resource busy

 最近安裝虛擬機器時遇到這樣的問題,實體機器有兩張GPU,新增兩台VM,各配置一張GPU,開啟VM只能開啟一台,錯誤訊息如下

kvm: -device vfio-pci,host=0000:02:00.0,id=hostpci0.0,bus=ich9-pcie-port-1,addr=0x0.0,x-vga=on,multifunction=on: vfio 0000:02:00.0: failed to open /dev/vfio/1: Device or resource busy
TASK ERROR: start failed: QEMU exited with code 1

注意上面錯誤訊息有一段顯示 failed to open /dev/vfio/1 ,這代表PCI虛擬化的部分沒有把GPU的IOMMU Group分開,如下圖正常GPU虛擬化後的IOMMU應該會分成兩個不同的Group,但是我這台電腦不知道甚麼原因沒有順利將分組,這部分我就沒截到圖,如果遇到這問題應該會顯示兩張GPU的IOMMU Group是在1的Group。



接下來漫長的Google與Debug後,找到最簡單的解決方案,只要是PVE 7.1以上的版本應該都可以透過修改/etc/default/grub來解決,新增內容如下

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream"

我認為是pcie_acs_override=downstream 這段生效,但也沒很確定,其他人有機會可以試試看。

詳細的內容可以參考我下面Google過的文章

https://forum.proxmox.com/threads/pcie-acs-override-not-working-can-not-split-iommu-groups.51792/

https://github.com/zman0900/linux-vfio-aur

https://github.com/ivanhao/pvetools/issues/34





沒有留言: