Virtual-Machine
為什麼 PCI 直通不能將我的設備提供給來賓作業系統?
我想試試 PCI 直通。我已將舊的擷取影片卡傳遞給 Windows XP 來賓。
IOMMU
已啟用;
vfio_pci
已載入我執行這個命令:
virsh nodedev-detach pci_0000_05_05_0 lspci -s 00:05 -v
它報告
vfio
正在“執行” PCI 設備,但是當我使用 PCI 設備啟動 XP 時,它給了我這個錯誤:Please ensure all devices within the iommu_group are bound to their vfio bus driver.
我做錯了什麼?
我找到了解決方案。首先必須確定 IOMMU 組;在我的情況下是 11(我發現它使用
lspci
和讀取 pci 地址,在我的情況下是 05:05:0)find /sys/kernel/iommu_groups/ -type l|grep \/11 /sys/kernel/iommu_groups/11/devices/0000:00:14.4 /sys/kernel/iommu_groups/11/devices/0000:05:06.0 /sys/kernel/iommu_groups/11/devices/0000:05:05.0
所以我們必須將 05:05 和 05:06(該組的兩個 PCI 卡)添加到
qemu
,with 中libvirt
。這很容易使用 virt-manager 添加硬體,選擇 pci 主機。現在我們啟動並且..另一個錯誤出現在dmesg
:"Flags mismatch irq 21. 00000000 (vfio-intx(0000:05:05.0)) vs. 0000000....usb...."
這意味著我們的系統不能共享中斷,所以我們必須從主機中移除設備。
所以我們必須找到中斷:
cat /proc/interrupts | grep 21
它返回例如 usb2,所以我們搜尋 usb dir:
find /sys/devices/pci0000\:00/0000\:00\:* -iname usb2
,轉到usb dir,在我的情況下為13.2:
cd /sys/devices/pci0000\:00/0000\:00\:13.2/
並從主機中刪除(原文如此!):
echo -n 1 > remove
現在,當啟動客人時,pci卡被分配給它。
並返回給我們?我會添加答案…如果我找到解決方案!