Contexto
Estou tentando executar o gerador de pacotes MoonGen, no entanto, ele exige que eu conecte uma NIC ao driver VFIO-PCI. Portanto, devo primeiro desvincular uma NIC de seu driver atual e, em seguida, revinculá-la com o driver VFIO-PCI.
Desvinculação
Comecei desvinculando minha NIC com endereço PCI 0000:03:00.1 do driver atual, mlx5_core:
$ echo -n "0000:03:00.1" > /sys/bus/pci/drivers/mlx5_core/unbind
dmesg, rodando em outra janela, reporta:
[Aug30 23:36] mlx5_3:wait_for_async_commands:735:(pid 1605): done with all pending requests
[ +0.048579] (0000:03:00.1): E-Switch: cleanup
Isso me faz acreditar que tudo correu bem e, usando as ferramentas fornecidas pelo módulo devbind do DPDK junto com o ifconfig, tive a certeza de que minha NIC estava desvinculada.
Vinculativo
Agora, tento vincular minha NIC ao driver VFIO-PCI solicitando:
$ echo -n "0000:03:00.1" > /sys/bus/pci/drivers/vfio-pci/bind
Que retornou a mensagem de erro:
bash: echo: write error: No such device
Olhando para o relatório dmesg, ele afirma:
[Aug31 03:37] vfio-pci: probe of 0000:03:00.1 failed with error -22
Pergunta
Depois de pesquisar a mensagem de erro por algum tempo, ainda não descobri seu significado. Alguém sabe o que está acontecendo?
Acontece que o problema era que eu tinha que instalar preventivamente o Mellanox OFED para minha NIC Mellanox MT27710 ConnectX-4.
Para qualquer pessoa com o mesmo problema e NIC ou outras NICs Mellanox (limitadas a MLX4 e MLX5, pois essas são as únicas NICs Mellanox compatíveis com DPDK), https://community.mellanox.com/s/article/how-to-install- mellanox-ofed-on-linux--rev-4-4-2-0-7-0-x é um ótimo recurso sobre como resolver esse problema.