Isso acabou sendo uma resposta de 2 partes e aqui está no caso de ajudar alguém:
- Para responder à pergunta original, para adicionar uma passagem PCI, é melhor usar o Virtual Machine Manager. Selecione sua VM e clique em Abrir . Vá até Ver detalhes e clique no botão " Adicionar hardware ". Você também pode realizar a mesma coisa via linha de comando:
server$ virsh edit VM_name
e adicione essas linhas ao arquivo XML.
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x01' function='0x2'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</hostdev>
Você pode encontrar o domínio, o barramento, o slot e o nome da função usando
lspci -t
lspci -n
- Agora, para que o processo acima funcione, primeiro é preciso desvincular o driver atual da placa PCI e vinculá-lo ao driver da máquina virtual. No meu caso, este foi um trecho do comando lspci --v
server$ lspci -nnv
01:01.0 Multimedia video controller [0400]: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [14f1:8800] (rev 05)
Subsystem: DViCO Corporation FusionHDTV 5 Gold [18ac:d500]
Flags: bus master, medium devsel, latency 64, IRQ 17
Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
Capabilities: <access denied>
Kernel driver in use: cx8800
As instruções para desvinculação no site projeto KVM não ajudam porque elas fazem referência a pci-stub que é obsoleto (tanto quanto eu entendo). Em vez disso, faça o seguinte para desvincular o driver e vinculá-lo ao driver VFIO:
server$ sudo modprobe kvm_intel
server$ sudo modprobe kvm
server$ kvm-ok
server$ modprobe vfio-pci
server$ sudo chmod 222 /sys/bus/pci/drivers/vfio-pci/new_id
server$ sudo chmod 222 /sys/bus/pci/devices/0000\:01\:01.2/driver/unbind
server$ echo 0000:01:01.2 > /sys/bus/pci/devices/0000\:01\:01.2/driver/unbind
server$ echo "14f1 8802" > /sys/bus/pci/drivers/vfio-pci/new_id
Você notará que eu tive que usar chmod para obter permissão para desvincular / vincular o driver. Novamente, você precisa fazer o passo 2 antes de fazer o passo 1.
-
Se ele reclamar sobre permissões ao adicionar a passagem PCI, faça o seguinte
servidor $ modprobe -r vfio_iommu_type1 servidor $ modprobe vfio_iommu_type1 allow_unsafe_interrupts = 1
Eu encontrei este truque aqui .