SP680网卡槽位号预期为1实际为0问题分析
更新时间: 2026/06/02
在Gitcode上查看源码

问题背景

  • 单板类型:S920X20;
  • 软件版本:openUBMC 25.3.0.B003;
  • 涉及功能:网卡,系统上电,网卡信息上报;
  • 触发条件:多张网卡情况下,系统上电,查看PCIe卡槽位信息;
  • 业务表现:预期不同槽位对应实际安插的网卡;实际不同网卡槽位重复。

问题复现步骤

环境上安插多张网卡,系统上电,网卡信息上报后,系统信息->其他->PCIe卡信息查询。

关键日志信息

web页面信息显示: app.log日志如下:

定位过程

  1. web页面PCIe卡信息可知,200Gb/s Dual port card和Hi1822 SP323D(2*32G)FC卡的槽位号都是0,一个槽位不可对应两张网卡;
  2. app.log日志存在两行完全相同的日志,PCIe组件代码分析,每次on_add_object_complete会触发main start拓扑,两个main start中间没有打印拓扑建立的相关日志,说明两次拓扑建立一起执行了,导致第二次的拓扑建链拿到错误的槽位号。

问题原因

拓扑建立时,由于没有强制指定skynet服务拉起的顺序,导致同步属性概率性的早于建链,第二次进行拓扑建立,pcie卡概率拿到错误的slotid,导致无法正常加载。

解决方案

拓扑建立时使用queue将拓扑建链放入队列,顺序执行,保证每张网卡在拓扑建链时能拿到正确的网卡信息。