PCIパススルーKVMとvfio-pciは、PCIプローブでEINVALを提供します。

PCIパススルーKVMとvfio-pciは、PCIプローブでEINVALを提供します。

パススルーモードでKVMドメインにPCIeデバイスを接続しようとしています。 IOMMUグループには2つのデバイス(#28)があります。

03:00.0 PCI bridge: Texas Instruments XIO2001 PCI Express-to-PCI Bridge
04:00.0 Multimedia audio controller: Texas Instruments TMS320C6414 TMS320C6415 TMS320C6416

lspci -n値:

03:00.0 0604: 104c:8240
04:00.0 0401: 104c:a106

私はUbuntu 14.04を実行しています。私は持っています:

  • KVMをインストールし、ドメインを設定し、KVMとvfio-pciモジュールがロードされていることを確認してください。
  • カーネルコマンドラインでintel_iommu = onを設定し、dmesgを使用して有効になっていることを確認します。
  • kvm-ok印刷加速が設定され、チップセットはVT-dをサポートします。
  • 確認済み 03:00.0 現在デバイスに記載されているドライバはありません。ls -l /sys/bus/pci/devices/0000\:03\:00.0/

したがって、デバイスをvfio-pciにバインドするには、次の手順を実行します。

# echo "104c a106" > /sys/bus/pci/drivers/vfio-pci/new_id
# echo "104c 8240" > /sys/bus/pci/drivers/vfio-pci/new_id

それから:

root@tupac:~# echo "0000:03:00.0" > /sys/bus/pci/drivers/vfio-pci/bind 
bash: echo: write error: No such device

ただし、マルチメディアコントローラにはAOKが表示されます。

root@tupac:~# ls -l /sys/bus/pci/drivers/vfio-pci/
total 0
lrwxrwxrwx 1 root root    0 Feb 24 13:07 0000:04:00.0 -> ../../../../devices/pci0000:00/0000:00:02.2/0000:03:00.0/0000:04:00.0
--w------- 1 root root 4096 Feb 24 13:05 bind
lrwxrwxrwx 1 root root    0 Feb 24 13:07 module -> ../../../../module/vfio_pci
--w------- 1 root root 4096 Feb 24 13:15 new_id
--w------- 1 root root 4096 Feb 23 19:47 remove_id
--w------- 1 root root 4096 Feb 23 19:43 uevent
--w------- 1 root root 4096 Feb 24 13:07 unbind

03:00.0(PCIe-PCIアダプタ)はvfio-pciデバイスの下には表示されません。同様に、kvm ホスティング構成を使用しようとすると、次の結果が表示されます。

virsh # start rivendell
error: Failed to start domain rivendell
error: Failed to bind PCI device '0000:03:00.0' to vfio-pci: No such device

私はsyslogでPCIe EINVALコードと思われるものを得ました。

Feb 23 19:46:46 tupac kernel: [  214.159625] vfio-pci: probe of 0000:03:00.0 failed with error -22

原因は何ですか?これはアダプタの背後にあるシステムのPCIバスの存在に関連していますか?

答え1

vfio-pciブリッジングはサポートされていません。

iommuグループを一緒に割り当てる必要があるという提案とは異なり、正しいアプローチは、ブリッジの反対側にデバイスを割り当てるとゲストに正常に表示されることです。

答え2

このフォーラム私を連れて行くこのgithubリポジトリこれには、2番目のワイヤレスカードをvfio-pciドライバにバインドしようとしたときに問題を解決したvfio-pci-bind.shスクリプトが含まれています。

構文はvfio-pci-bind.sh 0000:00:00.0デバイス0000:00:00.0IDです。

関連情報