ゲストにUSBカードを転送しようとしていますが、VFIOドライバを固定できないようです。代わりに、ホストはカードをロードして引数します。私のGPUが正常に通過したので、vfio / IOMMUが動作すると確信しています。
カード:Sonnet Allegro USB 3.1、2ポートUSB-C 10Gb PCIeカード(USB3C-2PM-E)マザーボード:ASRock x399 Taichi CPU:Threadripper 1950x GPUをリリースしたときと同じプロセスに従おうとしましたが、これが重要です。私が学んだことここ:
まずカードIDを取得します。
~ lspci | grep USB
01:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] Device 43ba (rev 02)
0a:00.0 USB controller: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller
0b:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) USB 3.0 Host Controller
45:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) USB 3.0 Host Controller
次へ。ベンダー、製品ID、およびエイリアスをインポートし、それに応じてシステムファイルを変更して、ホストがカードをプリエンプションするのを防ぎます。
~ lspci -nn | grep 0a:00
0a:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller [1b21:1242]
cat /sys/bus/pci/devices/0000:0a:00.0/modalias
pci:v00001B21d00001242sv000016B8sd00007230bc0Csc03i30
~ sudo nano /etc/modprobe.d/local.conf
最後に貼り付ける:
alias pci:v00001B21d00001242sv000016B8sd00007230bc0Csc03i30 vfio-pci
options vfio-pci ids=1b21:1242
それから:
~ sudo update-initramfs -u
次に、再起動し、カードがvfioドライバを使用していることを確認します。
~ lspci -kn | grep -A 2 0a
0a:00.0 0c03: 1b21:1242
Subsystem: 16b8:7230
Kernel driver in use: xhci_hcd
また、上記と同じブログに沿って上書きスクリプトを作成してみました。
sudo nano /sbin/vfio-pci-override-usb.sh
#!/bin/sh
DEVS="0000:0a:00.0"
for DEV in $DEVS; do
echo "vfio-pci" > /sys/bus/pci/devices/$DEV/driver_override
done
modprobe -i vfio-pci
#####
sudo chmod 755 /sbin/vfio-pci-override-usb.sh
sudo nano /etc/modprobe.d/local.conf
前の項目をコメントアウトし、次を追加します。
install vfio-pci /sbin/vfio-pci-override-usb.sh
sudo update-initramfs -u
reboot
しかし、まだ動作しません。
~ lspci -kn | grep -A 2 0a:00
0a:00.0 0c03: 1b21:1242
Subsystem: 16b8:7230
Kernel driver in use: xhci_hcd
また、lspciでドライバを検索すると(他のドライバを使用していることを確認するために)、複数のデバイスが表示されますが、0a:00は表示されません。
~ lspci -kn | grep -A 2 xhci
Kernel driver in use: xhci_hcd
01:00.1 0106: 1022:43b6 (rev 02)
Subsystem: 1b21:1062
--
Kernel driver in use: xhci_hcd
0b:00.0 1300: 1022:145a
Subsystem: 1022:145a
--
Kernel driver in use: xhci_hcd
0c:00.0 1300: 1022:1455
Subsystem: 1022:1455
--
Kernel driver in use: xhci_hcd
46:00.0 1300: 1022:1455
Subsystem: 1022:1455
次にドライバをブラックリストに登録してみました。
sudo nano /etc/default/grub
# original: GRUB_CMDLINE_LINUX_DEFAULT=”amd_iommu=on”
# to:
GRUB_CMDLINE_LINUX_DEFAULT=”modprobe.blacklist=xhci_hcd amd_iommu=on”
##then:
sudo update-grub
##Uncomment in local.conf:
# options vfio-pci ids=1b21:1242
sudo update-initramfs -u
まだしていません:
lspci -kn | grep -A 2 0a:00
0a:00.0 0c03: 1b21:1242
Subsystem: 16b8:7230
Kernel driver in use: xhci_hcd
また何を試すことができますか?このデバイスで使用するカーネルドライバがvfio-pciでなければならないと思いますか?
ベストアンサー1
パーティーに少し遅れていることを知っていますが、Google検索で同様の問題に直面しているすべての人にとって、次のことが役立つことを願っています。 スタンドアロンUSBコントローラでのみこれをテストしました。
xhci_hcdは実際にカーネルに組み込まれているため、USBコントローラを宣言します。回避策が見つからない限り、vfio-pciは使用中のカーネルに割り当てられません。 1つの方法は、バインド/バインド解除のためにスクリプトを呼び出すことです。
この問題を解決する別の簡単な方法は、次のコマンドを使用することです。
sudo driverctl -v set-override 0000:0X:00 vfio-pci
0000:0X:00はPCI IDです。
再起動後に割り当てられたドライバは自動的にvfio-pciになります。