끝에 붙여넣기:

끝에 붙여넣기:

게스트에게 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는 사용 중인 커널로 할당되지 않습니다. 한 가지 방법은 바인딩/바인딩 해제를 위해 스크립트를 호출하는 것입니다.

이 문제를 해결하는 또 다른 쉬운 방법은 다음 명령을 사용하는 것입니다.

sudo driverctl -v set-override 0000:0X:00 vfio-pci

0000:0X:00은 PCI ID입니다.

재부팅 후 할당된 드라이버는 자동으로 vfio-pci가 됩니다.

답변2

하하, 바보야, 고생을 많이 한 것 같은데, virt-install에서 카드를 추가할 수 있고 카드가 VFIO 드라이버에 바인딩되어 있지 않아도 괜찮은 것 같습니다.

편집: NVIDIA GPU와 USB 카드를 동시에 전달할 수 없기 때문에 너무 빨리 말한 것 같습니다(virt-manager는 시작하려고 할 때 오류 없이 중단됩니다).. 하지만 별도의 것 같아요. 문제는 두 개의 특정 카드가 합쳐지는 것에 관한 것이기 때문입니다.

편집 #2: 비결은 다른 GPU로 Windows를 설치한 다음 도메인 XML을 편집하여 GPU 패스스루를 설정하는 것입니다.

관련 정보