重启OS后 SP681的ncsi通信断开

基于2509的openubmc版本

前置条件:我们关闭了SP681网卡的SMBUS通道,因为在SMC的环境下,会造成其所在的那条smbus堵塞,具体请见 SP681网卡插上后,该卡所在板卡的I2C链路频繁报错 - Hardware SIG - openUBMC 论坛

初始情况下,BMC通过NCSI over MCTP正常获取网卡温度

此时重启OS,网卡温度无法获取,产生温度获取失败告警:


从日志看重启OS之后NCSI链路检查失败:


log中还看到一个空值错误:
image

请问这个是否是ncsi通信建立阶段的问题?是否已知?

答案内容由AI生成,仅供参考:

三、总结

问题 状态 参考来源
重启OS后SP681网卡NCSI通信断开,温度获取为0 已知问题,已修复 Topic 6873(document chunk reference_id: 1)
根本原因 NCSI通信建立阶段异常或温度读取逻辑缺陷 同上
修复方式 更新组件驱动,TemperatureStatus默认值设置为4 同上
关闭SMBUS通道的影响 不直接导致本问题(SP681主通信走PCIe) 驱动适配指南(Search Result 9)
建议操作 升级至包含修复的组件版本,并按network_adapter排查步骤验证 Search Result 2

结论:您的问题确实是NCSI通信建立阶段的问题,并且已在社区被识别和修复。请优先参照社区方案更新相关组件(尤其是 component_drivers),同时可继续排查 mctpd 及链路状态日志以确认闭环。

点击此处查看详细分析解答

根据您提供的信息及知识库内容,您所遇到的“重启OS后SP681网卡NCSI通信断开、温度无法获取”的问题在社区中已有相关讨论并被确认为已知问题。以下为您综合分析及参考方案。


一、问题确认:属于已知且已修复的场景

1. 高度匹配的社区案例

在知识库中,有一篇主题与您的问题几乎完全一致:【参考 topic_id: 6873】

  • 问题描述:服务器插SP681、SP670网卡,走南向加载,重启OS后出现“网卡温度获取不到”告警。
  • 关键日志:通过NCSI报文分析发现网卡返回的温度值为 0,且链路状态检查失败(类似您日志中的 get ncsi link status failed)。
  • 根本分析:南向加载时,NCSI通信在OS重启后异常,导致温度读取返回0;反复过温日志与调速策略相关,但最终确认是 NCSI通信建立或温度读取逻辑存在缺陷。

原文摘录:

“分析ncsi报文,收到的温度是0”
“重启os后网卡会返回温度为0”
“南向加载代码是不是需要对传入做异常处理”

2. 官方修复方案

在同一个主题中,社区维护者 xushuo25 回复:

“该问题已在近期解决,尝试用最新 component_drivers 组件代码出包看一下问题是否解决?最新代码中 TemperatureStatus 默认值参照 Scanner详解及数据更新机制设置为 4。”

  • 该修复已在 OpenUBMC 26.03 版本及后续版本中合入。
  • 解决核心:调整 NCSI 温度读取失败时的默认状态,避免误报。

3. 与您环境的关联

  • 您使用的 2509 版本 可能未包含该修复,因此现象与已知问题一致。
  • 您关闭了 SP681 网卡的 SMBUS 通道,但 SP681(Hi182x系列)的主要NCSI通信走 PCIe 通道(SMBus仅用于带外辅助信息),因此关闭SMBus 不直接影响核心NCSI链路,但可能导致部分辅助数据获取失败。问题现象(温度读为0、链路检查失败)与已知案例完全吻合,核心问题仍在NCSI通信建立阶段。

二、排查建议(基于知识库的官方指南)

1. 按 network_adapter 组件排查NCSI通信状态

参考【Search Result 2】:

  1. 确认 network_adapter 已正确识别网卡NCSI能力并注册NCSI网口。
  2. 确认OS重启后 bmc_network 是否触发了NCSI通道使能(Tx enable)。
  3. 检查 mctpd(MCTP)或 hwproxy(SMBus/I2C)通信日志中是否存在读写失败或超时。
    • 常见错误日志:get ncsi link status failed、ncsi cmd ctrl get link status failed、ncsi_comm.lua 报告无效端口ID等。

2. 对比已知修复尝试更新组件

  • 关键组件:component_drivers、devmon、libmcpp
  • 社区修复版本:
    • component_drivers/1.2.274@openubmc/stable
    • devmon/1.2.65@openubmc/stable
    • libmcpp/1.2.169@openubmc/stable
  • 若您尚未更新至上述版本,建议升级后重试。

3. 其他相关已知问题(供交叉验证)

  • Intel E810 网卡 因 openUBMC NCSI payload length 计算错误导致温度获取失败(已确认并在Q2版本修复)【参考 topic_id: 1316】。
  • 反复切换port口后NCSI概率性不通 也是社区已知问题,与OS重启场景类似【参考 Entity “反复切换port口后NCSI概率性不通问题分析”】。

三、总结

问题 状态 参考来源
重启OS后SP681网卡NCSI通信断开,温度获取为0 已知问题,已修复 Topic 6873(document chunk reference_id: 1)
根本原因 NCSI通信建立阶段异常或温度读取逻辑缺陷 同上
修复方式 更新组件驱动,TemperatureStatus默认值设置为4 同上
关闭SMBUS通道的影响 不直接导致本问题(SP681主通信走PCIe) 驱动适配指南(Search Result 9)
建议操作 升级至包含修复的组件版本,并按network_adapter排查步骤验证 Search Result 2

结论:您的问题确实是NCSI通信建立阶段的问题,并且已在社区被识别和修复。请优先参照社区方案更新相关组件(尤其是 component_drivers),同时可继续排查 mctpd 及链路状态日志以确认闭环。

dump_info_1.zip (5.4 MB)
dump_info_2.zip (9.6 MB)

请附上一键日志收集辅助定位


有附的

可以参照这个问题下的抓取ncsi报文的方法先抓取一下ncsi报文查看一下【问题求助】网卡概率出现mctp超时,获取温度失败 - 交流互助区 - openUBMC 论坛