标签 bug 下的文章


气人的 Intel 网卡


好久没水博客了,想起 4 月 15 日这一次三个人折腾了一整天的事情,于是把 15 号的这篇日记放了上来。权当吐槽。


前两天,咕了好久的服务器上架终于办完了。昨天联系 HKIX 做调试,发生了 HKIX 那边一通电,机器里的路由器就 kernel panic 的问题,看了下 log 是 PCI-e 直通导致的,但是没关系,本身就准备过不直通用虚拟化方案的 solution。但是 ESXi 里面竟然网卡都没了,只有没有通电的端口还在,于是今天开始了漫长的 debug。

首先是 cyy 重装了 ESXi 为 PVE,因为我们觉得可能是 ESXi 有点问题。装好之后就是尝试直通,失败。经检查可能是我们的服务器对于 VT-d 的支持的问题,由于 HPE 的一些策略,所以不能顺利直通。使用 HPE 官方提供的方法同样没有解决。但是无论如何至少宿主机里能找见网卡,比 ESXi 里面网卡都没了要好,于是我们配好了虚拟交换机,然后在上面配好了路由器。正准备通知 HKIX 进行第二次测试,我们就发现了很要命的事情,麻田哥哥买的这个服务器型号只有 RHEL 等 Linux 发行版的驱动。没有驱动,尤其是 RAID 阵列卡的驱动是一件很要命的事情,因为这个阵列卡是个软 RAID,没有驱动的话 RAID 会形同虚设。所以我们还是得回 ESXi,至少 HPE 给 ESXi 6.7 还是有做 Gen 8 的设备适配的。

回到 ESXi,还是老问题,我精读了一下系统 log,终于看到一条重要信息。

2020-04-15T12:18:16.586Z cpu3:66008)WARNING: vmklinux: pci_announce_device:1486: PCI: driver ixgbe probe failed for device 0000:04:00.1

看样子是驱动的问题,同一张卡上 .0 的端口的驱动就正常加载了。然后我去找了一个比较大的 log,然后搜索关键字,发现了这个:

2020-04-15T12:18:16.586Z cpu3:66008)<3>ixgbe 0000:04:00.1: failed to load because an unsupported SFP+ module type was detected.
2020-04-15T12:18:16.586Z cpu3:66008)<3>ixgbe 0000:04:00.1: Reload the driver after installing a supported module.
2020-04-15T12:18:16.586Z cpu3:66008)WARNING: vmklinux: pci_announce_device:1486: PCI: driver ixgbe probe failed for device 0000:04:00.1
2020-04-15T12:18:16.586Z cpu3:66008)LinPCI: LinuxPCI_DeviceUnclaimed:257: Device 0000:04:00.1 unclaimed.
2020-04-15T12:18:16.586Z cpu3:66008)PCI: driver ixgbe claimed 1 device

居然是不支持的光模块!但是很奇怪,在 PVE 下面也是 ixgbe,为什么 PVE 就没有报这个错了,能够顺利加载。东找找西找找,发现了 ESXi 自带的 ixgbe 驱动比较旧,抱着试试看的心情更新了一下,漫长的重启之后,新的驱动果然就没有报错了!我们高兴死了,不然就只能刷 EEPROM 强行解决了。我们猜测是因为 ixgbe 进 Linux 的时候,因为这个原因被拒绝了,于是不得不去掉这个 SFP 模块的限制,于是就有了这个原因。但是 ixgben 是 Intel 给 ESXi 定制的闭源驱动,应该就没有这种好事了,所以我们也就没有去找 ixgben 的新版驱动测试,当然 ixgben 无法加载也是这个问题。

2020-04-15T13:10:04.379Z cpu3:65925)ixgben: ixgben_InitSharedCode:185: Unsupported SFP+ or QSFP detected. Try to replace a supported module then reload the driver.
2020-04-15T13:10:04.379Z cpu3:65925)ixgben: ixgben_InitSharedCode:187: HW init failed: -19
2020-04-15T13:10:04.379Z cpu3:65925)WARNING: ixgben: indrv_Attach:2399: Failed to init shared code
2020-04-15T13:10:04.379Z cpu3:65925)DMA: 691: DMA Engine 'ixgben' destroyed.
2020-04-15T13:10:04.383Z cpu3:65925)Device: 2482: Module 25 did not claim device 0x645f43035dc8be9d.

现在我们终于可以用虚拟化把这个光口接进虚拟机了。