pci-stub ou vfio-pci sendo sobrescrito pelo driver da Nvidia

1

Estou com dificuldades para configurar o VGA-passthrough. Estou executando um E5-1650v2, uma Nvidia GTX 970 para ser o host e um Quadro K4000 que eu quero passar para uma VM em um Asus X-99 E-WS. Este é o Ubuntu 16.04. Vt-d está ligado.

Eu tentei vincular o K4000 ao pci-stub e ao vfio-pci, e isso não funciona. Na linha de comando:

intel_iommu=on pci-stub.ids=10de:11fa,10de:0e0b ou

intel_iommu=on vfio-pci.ids=10de:11fa,10de:0e0b

E em /etc/initramfs-tools/modules . Ambas as técnicas acabam com o dispositivo de áudio ligado ao stub ou ao driver vfio, respectivamente, mas o driver da Nvidia sempre captura o dispositivo de exibição real.

Eu tentei definir

nvidia id=10de:13c2,10de:0fbb

(que é o cartão 970) em /etc/initramfs-tools/modules para ver se isso funcionaria, mas não fez diferença.

Eu também tentei desvincular o cartão da linha de comando, fazendo eco do ID do dispositivo para /sys/bus/pci/drivers/nvidia/unbind . Isso remove o diretório ...drivers/nvidia/ , mas também bloqueia o bash (que vai para 100% de um núcleo e é impossível de matar).

Existe uma maneira de dizer ao driver da Nvidia para ligar somente a uma placa?

Editar:

Para ver se haveria comportamento diferente, tentei vincular o 970 ao vfio. O driver nvidia ainda pega o dispositivo de vídeo, mas pelo menos eu estou vendo um grupo vfio em / dev / vfio fazendo isso, o que eu não consegui anotar acima não estava acontecendo antes.

Eu me pergunto se, de alguma forma, a ordem da ID PCI está envolvida; o K4000 é 06 e o 970 é 09, e a pré-inicialização e o processo de inicialização são exibidos no K4000. Eu não vejo nenhuma maneira de dizer ao BIOS qual placa tornar 'primária', e me pergunto se, uma vez que o BIOS preferia aquela placa, o kernel se recusaria a ligar o driver ao vfio / stub. O que implica que eu preciso derrubá-lo e reordenar os cartões.

    
por duplicate_id 27.11.2016 / 08:57

1 resposta

0

Este continua sendo um trabalho em andamento, mas o que acabou funcionando foi desvincular o primeiro cartão. Eu adicionei um arquivo de unidade do sistema para executar:

virsh ondedev-detach pci_0000_08_00_0

Para executar antes da unidade lightdm. O vfio-pci é então atribuído e eu posso passá-lo normalmente. Eu não tenho idéia do que é diferente entre usar o virsh para desanexar e usar /sys/bus/ide/drivers/.../unbind, mas o virsh não bloqueia um núcleo.

Isto é (a) passar o 970 através e (b) usando o driver Nouveau; Eu não posso fazê-lo funcionar com o K4000, e não tentei o Nvidia blob novamente por falta de tempo. A única razão pela qual posso pensar é que é um ID PCI menor e é usado pelo BIOS. Derrubar a máquina para testar essa teoria vai ter que esperar um pouco.

    
por 29.11.2016 / 16:05