绑定/解除绑定一个 PCIe 设备会禁用其他

绑定/解除绑定一个 PCIe 设备会禁用其他

我有 2 个 SFP,都已插入。lspci 显示它们位于 0000:05:00.0 和 0000:05:00.1。位于 0000:05:00.0 的设备被指定为“sfp2”,位于 0000:05:00.1 的设备被指定为“sfp1”。“sfp1”受 DPDK 控制(绑定到 igb_uio 驱动程序),而 sfp2 受 kenel 控制(绑定到 ixgbe 驱动程序)。

每当我将 sfp1 从 ugb_uio 解除绑定并绑定到 ixgbe 时,SFP2 都无法接收任何数据包。步骤:

  1. 解除 sfp1 绑定

    echo 0000:05:00.1 > /sys/bus/pci/devices/0000:05:00.1/driver/unbind
    
  2. 将 sfp1 绑定到 ixgbe

    echo 0000:05:00.1 > /sys/bus/pci/drivers/ixgbe/bind
    
  3. 检查 0x03000 处的 RXCTRL 寄存器

    ethtool -d sfp2| grep 0x03000 
    

    返回 0x00000。

我的问题是:

  1. 我做得对吗?如果正确,那么为什么 sfp2 无法接受任何数据包?

  2. 如果我错了那么正确的顺序是什么?

  3. 需要进一步研究哪些方面来解决这个问题?

注意:使用 dpdk-devbind.py 解除绑定和绑定也会发生这种情况。

提前致谢。

相关内容