PCIパススルーを試してみたいです。古いキャプチャビデオカードをWindows XPクライアントに渡しました。
IOMMU
有効
vfio_pci
次のコマンドを実行します。
virsh nodedev-detach pci_0000_05_05_0
lspci -s 00:05 -v
PCIデバイスが「実行中」であると報告しますvfio
が、PCIデバイスでXPを起動すると、次のエラーが返されます。
Please ensure all devices within the iommu_group are bound to their vfio bus driver.
私は何が間違っていましたか?
答え1
解決策が見つかりました。まず、IOMMUグループを識別する必要があります。私の場合は11です。 (lspci
私の場合は、pciアドレスを使用して読み取ることがわかりました。)
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
qemu
したがって、withに05:05と05:06(グループ内の2つのPCIカード)を追加する必要があります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ディレクトリを検索します。
find /sys/devices/pci0000\:00/0000\:00\:* -iname usb2
、USBディレクトリに移動します。私の場合は13.2です。
cd /sys/devices/pci0000\:00/0000\:00\:13.2/
ホストから削除されました(sic!)。
echo -n 1 > remove
ゲストが起動すると、PCI カードがゲストに割り当てられます。
再び私たちに戻ろうとしている?解決策を見つけたら、答えを追加します!