无法将 NIC 绑定到驱动程序 VFIO-PCI

无法将 NIC 绑定到驱动程序 VFIO-PCI

语境

我正在尝试运行数据包生成器 MoonGen,但它要求我将 NIC 绑定到 VFIO-PCI 驱动程序。因此,我必须先将 NIC 从其当前驱动程序解除绑定,然后将其与 VFIO-PCI 驱动程序重新绑定。

解除绑定

我首先解除 PCI 地址为 0000:03:00.1 的 NIC 与当前驱动程序 mlx5_core 的绑定:

$ echo -n "0000:03:00.1" > /sys/bus/pci/drivers/mlx5_core/unbind 

dmesg 在另一个窗口中运行,报告:

[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  

这让我相信一切都进展顺利,并且使用 DPDK 的 devbind 模块和 ifconfig 提供的工具,我确信我的 NIC 已解除绑定。

捆绑

现在,我尝试通过提示将我的 NIC 与 VFIO-PCI 驱动程序绑定:

$ echo -n "0000:03:00.1" > /sys/bus/pci/drivers/vfio-pci/bind  

返回了错误消息:

bash: echo: write error: No such device  

查看 dmesg 报告,其中指出:

[Aug31 03:37] vfio-pci: probe of 0000:03:00.1 failed with error -22    

问题

研究了错误信息一段时间后,我还是没搞明白它的含义。有人知道发生了什么吗?

答案1

事实证明,问题是我必须为我的 Mellanox MT27710 ConnectX-4 NIC 预先安装 Mellanox OFED。

对于有同样问题且拥有 NIC 或其他 Mellanox NIC(仅限于 MLX4 和 MLX5,因为它们是唯一与 DPDK 兼容的 Mellanox NIC)的任何人,https://community.mellanox.com/s/article/how-to-install-mellanox-ofed-on-linux--rev-4-4-2-0-7-0-x是关于如何解决此问题的宝贵资源。

相关内容