基于2603的openUBMC版本开发
发现SP681网卡会产生fru健康告警:

以及偶现温度获取失败告警:

sp681的csr中配置了这些chip:
但是资源树中并没有Eeprom_NetCard、Chip_Hi1822对象:

手动访问EEPROM,返回确实是失败:

app.log中也没有看到任何关于这两个chip自发现的打印,network_adapter也没有任何sp681网卡信息获取相关的打印。
请问Chip、Eeprom对象后面带_dev是什么意思,原对象为什么没有加载,是南向驱动部件导致的么? chip+network_adapter与南向驱动是两个独立的板卡加载、信息获取通道么
答案内容由AI生成,仅供参考:
根据您提供的回答内容,其中没有明确标有“问题总结”、“解决方案”或“结论”等字样的章节。因此,返回空内容。
点击此处查看详细分析解答
根据您提供的上下文信息,我们对您提出的问题进行如下分析。请注意,回答严格基于知识图谱和文档片段中的内容,未涉及外部知识。
1. Chip、Eeprom 对象后面带 _dev 是什么意思?
在提供的上下文中,未找到关于对象名称后带 _dev 后缀的明确解释。但结合文档片段的相关内容,可以做如下合理推测:
- 文档片段 【南向网卡驱动适配指南】 提到,南向驱动采用分层架构,包含
chip/ 目录(如 lm75、eeprom 等芯片驱动)。南向驱动加载后会创建对应的硬件对象,为了与上层管理对象(如 NetworkAdapter)区分,可能在对象名后加 _dev 以标识为南向驱动的设备对象。
- 文档片段 【南向适配网迅网卡经验分享】 中出现了
devmon 组件,该组件负责硬件 Chip 的发现和管理。因此 _dev 很可能与 devmon(设备监控) 或 南向驱动 的命名约定相关,表示该对象由底层驱动层管理,而非上层应用层。
由于上下文缺乏直接定义,建议结合您实际使用的 CSR 配置文件和 openUBMC 版本代码进一步确认。
2. 原对象为什么没有加载?是南向驱动部件导致的吗?
是的,很可能与南向驱动部件未正确加载或配置有关。以下是上下文中的相关依据:
-
文档片段【南向适配网迅网卡经验分享】 明确指出:
“devmon 服务未加载导致网卡自发现失败。如果同步更新后还是加载失败,那么可以在开发板(服务器)启动后跳转到 /opt/bmc/apps/devmon/ 路径手动加载 devmon 服务。”
→ 这说明 Chip 对象(如 Chip_Hi1822、Eeprom_NetCard)的加载依赖于 devmon 服务,而 devmon 服务属于南向驱动部件的一部分。
-
文档片段【SF200HT网卡温度获取不到问题分析】 描述了类似场景:
“SF200HT 网卡迁移到南向驱动组件后,SMBus 主从切换存在时序问题,导致 MCTP endpoint 没有上树,温度获取失败。”
→ 这表明南向驱动部件的加载或时序问题会直接导致底层对象(如 Chip、Eeprom)无法出现在资源树中。
-
从知识图谱中的关系可进一步佐证:
Component Drive → Network Card Adapter:Component Drive failed to adapt the network card adapter, resulting in the device not being recognized.
- 南向驱动(Component Drive)的适配失败会导致网卡设备不被识别,进而影响其相关 Chip 对象的创建。
-
用户提到 app.log 中没有相关 Chip 自发现打印,这与 devmon 服务未启动或配置异常的表现一致。
可能原因总结:
- devmon 服务未启动或启动失败;
- 南向驱动的 CSR 配置文件版本不匹配或路径错误;
- SMBus 主从切换时序问题(与 SF200HT 案例类似);
- Connector 对象的
Id 和 AuxId 未与网卡四元组匹配(参见文档片段【南向适配网迅网卡经验分享】中的解决方法)。
3. chip+network_adapter 与南向驱动是两个独立的板卡加载、信息获取通道吗?
它们不是完全独立的,而是分工协作、但又存在依赖关系的两个层次。根据上下文分析如下:
| 组件 |
角色 |
涉及功能 |
| 南向驱动(devmon、chip驱动等) |
底层硬件发现与访问 |
通过 I2C/SMBus 访问芯片(如 Eeprom、Hi1822),创建 Chip 对象,提供原始硬件数据 |
| network_adapter |
上层网络协议管理 |
管理 MCTP 端点、NCSI 通道、端口状态等,依赖底层硬件对象获取数据(如温度、FRU 信息) |
-
文档片段【南向适配网迅网卡经验分享】 提到了两种不同途径:
- 通过
mctpd 资源树发现 endpoint(南向驱动层面);
- 通过
network_adapter 组件创建 endpoint(上层网络适配器层面)。
并且提到:“如果 mctpd 资源树发现 endpoint 上树失败,但 devmon 组件 chip 上树成功,那么可以向 devmon 组件资源树上 Chip 发送 BlockIORead 请求。”
→ 这明确说明 devmon(南向)负责 Chip 对象,network_adapter 负责网络协议对象,两者可以独立存在,但最终数据获取需要两者配合。
-
文档片段【网卡CSR1.0配置指导】 中,Chip_Hi1822 和 Eeprom_NetCard 是在 CSR 配置文件中定义的,这些对象最终由南向驱动框架加载,而 NetworkAdapter、NetworkPort 等上层对象则由 network_adapter 服务管理。
结论:
- 南向驱动 负责硬件层(Chip、Eeprom)的加载和访问,提供原始数据(如温度、FRU)。
- network_adapter 负责网络协议层(MCTP endpoint、端口状态)的管理和上层数据汇总。
- 两者需要协同工作:如果南向驱动未加载 Chip 对象,network_adapter 将无法通过硬件链路获取温度、FRU 信息,从而导致您所遇到的告警。例如,温度获取失败可能就是由于南向驱动的 Chip 对象未上树,导致 MCTP 请求无法发送到对应硬件。
建议排查方向(基于上下文)
-
检查 devmon 服务状态
登录 BMC 后执行 systemctl status devmon 或查看 /opt/bmc/apps/devmon/ 下是否启动。
-
检查南向驱动 CSR 配置是否正确
核对 14140130_1e180f84_1e180f84.sr(SP681 对应的 CSR 文件)中 Chip_Hi1822 和 Eeprom_NetCard 的配置路径、地址是否与硬件原理图一致。
-
验证 Connector 对象的 Id/AuxId 匹配
使用 mdbctl lsobj Connector 和 lsprop Connector 查看当前 Connector 的四元组,对比网卡实际信息,若不匹配则使用 setprop 修改(参考文档【南向适配网迅网卡经验分享】)。
-
确认 SMBus 主从切换时序
参考 SF200HT 的案例,考虑在 BMC 侧增加适当延时(如 10s),或联系网卡厂商获取支持主从切换的定制固件。
-
查看 network_adapter 日志
尽管您说 app.log 中没有相关打印,但可检查 network_adapter 自身的日志文件(如 /var/log/bmc/network_adapter.log),确认是否有 MCTP endpoint 创建失败或温度获取超时等记录。
如果以上排查后问题仍未解决,可能需要进一步结合具体硬件和固件版本深入分析。目前基于公开上下文的分析到此为止。
南向驱动部件看到了打印,在OS重启时有大概率复现(强制下电再上电操作),复现后温度一直获取失败。
还生fru告警的问题:
csr中配置为"Reading": “<=/Fru_PCIeCard.Health”,,这样会导致告警无法消除,我要改csr的话,是该VPD下面的CSR还是南向驱动下面的CSR?
请问什么时候走南向部件和devmon,什么时候走VPD和networ_kadapter?
走vpd的chip、eeprom、smc等对象可以通过tracechip 芯片名 start查看总线读写数据。
走南向驱动的对象有类似的方法可以调么?
Gendany
(Gendany)
5
暂时还没有实现哦~
南向部件驱动的代码已经在社区了,欢迎大家贡献代码实现相关功能