PCI 패스스루 KVM 및 vfio-pci는 PCI 프로브에서 EINVAL을 제공합니다.

PCI 패스스루 KVM 및 vfio-pci는 PCI 프로브에서 EINVAL을 제공합니다.

패스스루 모드에서 KVM 도메인에 PCIe 장치를 연결하려고 합니다. IOMMU 그룹에 두 개의 장치(#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

저는 우분투 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 저장소여기에는 두 번째 무선 카드를 vfio-pci 드라이버에 바인딩하려고 할 때 문제를 해결한 vfio-pci-bind.sh 스크립트가 포함되어 있습니다.

구문은 vfio-pci-bind.sh 0000:00:00.0장치 0000:00:00.0ID입니다.

관련 정보