KVM de passagem PCI com vfio-pci fornecendo EINVAL no probe PCI

2

Estou tentando conectar dispositivos PCIe em passagem ao meu domínio KVM. Eu tenho dois dispositivos em um grupo 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

e lspci -n valores:

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

Estou executando o Ubuntu 14.04. Eu tenho:

  • KVM instalado, configure domínios, assegure que os módulos KVM e vfio-pci sejam carregados
  • Configure intel_iommu = on na linha de comando do kernel e verifique se ele está ativado com o dmesg
  • kvm-ok imprime aceleração está tudo pronto, o VT-d é suportado no chipset
  • Confirmado que o dispositivo 03: 00.0 não tem um driver listado atualmente em ls -l /sys/bus/pci/devices/0000\:03\:00.0/

Então eu faço isso para ligar os dispositivos ao vfio-pci:

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

Então:

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

No entanto, o controlador multimídia aparece 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 (que é um adaptador PCIe para PCI) não está aparecendo sob os dispositivos vfio-pci . Da mesma forma, ao tentar usar a configuração gerenciada pelo kvm, recebo:

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

e sob syslog eu recebo o que eu acredito ser o código PCIe EINVAL:

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

O que está causando isso? Isso é algum problema com a presença do barramento PCI no sistema atrás do adaptador?

    
por Nicholas Andre 24.02.2016 / 19:31

1 resposta

0

vfio-pci não suporta pontes.

Ao contrário do que é sugerido sobre o grupo iommu que precisa ser atribuído em conjunto, a coisa apropriada a fazer é atribuir apenas o dispositivo no outro lado da ponte e, em seguida, ele aparece muito bem no convidado.

    
por 25.02.2016 / 02:57