语境
我正在尝试运行数据包生成器 MoonGen,但是,它需要我将 NIC 绑定到 VFIO-PCI 驱动程序。因此,我必须先将 NIC 与其当前驱动程序解除绑定,然后再将其与 VFIO-PCI 驱动程序重新绑定。
解绑
我首先从当前驱动程序 mlx5_core 解除绑定我的 NIC 与 PCI 地址 0000:03:00.1:
$ 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
问题
在研究了一段时间的错误信息之后,我还没有发现它的含义。有谁知道发生了什么?
原来问题是我必须为我的 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是有关如何解决此问题的重要资源。