Virtual-Machine

為什麼 PCI 直通不能將我的設備提供給來賓作業系統?

  • June 25, 2018

我想試試 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卡被分配給它。

並返回給我們?我會添加答案…如果我找到解決方案!

引用自:https://unix.stackexchange.com/questions/324511