最後に貼り付ける:

最後に貼り付ける:

ゲストに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になります。

おすすめ記事