LPe32002 FC卡南向的PartNumber与PCIeCard.PartNumber不同步问题

1、LPe32002 FC卡在vpd中做过适配

2、这张卡现在又在component_drivers组件中做了适配

3、南向设备树对象中PartNumber在sr中配置的属性与Vpd中PCIeCard.PartNumber配置的属性都是06030393

4、实际运行过程中南向设备树对象中PartNumber的属性会被从Fru读出来的值覆盖为:LPe32002-M2-AP

现象:

web Pcie卡界面中部件编码是从PCIeCard.PartNumber取的值,显示为06030393

而告警中显示的BN值为南向设备树对象中PartNumber的值,显示为LPe32002-M2-AP

问题

南向和北向的PartNumber后续是否有同步计划?如果没有同步,以哪个为准呢?

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

总结

问题 说明
以哪个为准? 按照已评审的规范,应优先以 FRU 读取值(LPe32002-M2-AP)为准,而非 CSR 配置值。
南向已更新,北向未更新 北向 PCIeCard.PartNumber 未同步 FRU 值,这是当前实现的缺失,需额外适配。
同步计划 社区已有同步要求和优先级规范,但具体实施计划未在提供的资料中提及。建议依据规范自行实现同步逻辑,并考虑向社区贡献补丁。

如有进一步细节需求,您可参考 网卡 PartNumber/SerialNumber 更新优先级顺序 及 CSR 上库自检 Checklist 中的同步条款。

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

根据您描述的问题,我们梳理了 openUBMC 社区已有的相关规范和评审结论。现解答如下:


1. 关于 PartNumber 的优先级规则(以哪个为准)

openUBMC 社区已评审并确定了 PartNumber 的更新优先级顺序,结论为:

方案1:fru > PCIe空间 > csr配置
即:如果有 FRU,则优先以 FRU 读取的值为准;如果无 FRU,则从 PCIe 空间获取;如果都获取不到,才使用 CSR 配置的值。
注意:FRU 读取到空值时认为是合理值并需要更新;而 PCIe 空间获取到空值则视为不合理,不应更新。
——引自【已评审】网卡 partnumber、serialnumber 更新优先级顺序(搜索结果第7条)

因此,按照此规范,应以 FRU 读取的 LPe32002-M2-AP 为准,而不是 CSR 中配置的 06030393。


2. 当前不一致的原因(南向 vs 北向)

您观察到的现象是:

  • 南向设备树对象(Component_PCIeCard / bmc.dev.PCIeDevice)的 PartNumber 已被 FRU 值 LPe32002-M2-AP 覆盖,符合优先级规范。
  • 北向 PCIeCard 对象(如 Web 界面读取的 PCIeCard.PartNumber)却仍显示 CSR 配置的 06030393,未按规范同步更新。

这反映了当前同步机制的不完整。根据已有资料:

  • CSR 上库自检 Checklist 明确要求:“Component_PCIeCard 对象的 PartNumber、SerialNumber 均需要同步 PCIeCard 下的 PartNumber、SerialNumber 属性”(搜索结果第1条)。
  • 但在实际适配中,PCIeCard 对象的 PartNumber 无法通过 CSR 关联自动刷新,且 NetworkAdapter 对象的 PartNumber 属性变更后不广播通知(文档块4,topic 6783)。
  • 知识图谱也指出:PartNumber 仅在启动时与 CardPartNumber 同步,不动态更新。

因此,当前北向接口(如 Web)的 PCIeCard.PartNumber 未被触达更新,导致显示不一致。


3. 后续是否有同步计划?

目前社区已有明确的同步规范(上文提到的 Checklist 和第7条评审),但并未在此次提供的资料中直接给出具体的“同步计划”或时间表。不过,以下几点可以为您提供参考:

  • 已有明确的同步要求:CSR 上库自检时强制要求 Component_PCIeCard.PartNumber 与 PCIeCard.PartNumber 保持一致。
  • 优先级规范已评审通过:fru > PCIe空间 > csr 是社区共识,后续适配应遵循此规则。
  • 同步缺失是已知问题:社区讨论(topic 6783)中已提出“NetworkAdapter 的 PartNumber 变更不广播”以及“PCIeCard 的 PartNumber 无法通过 CSR 关联刷新”等问题,说明社区已注意到该缺口。

建议:您可以在社区推动实现以下同步机制:

  • 令 PCIeCard.PartNumber 监听并同步 Component_PCIeCard.PartNumber 的变化,或直接采用相同的优先级逻辑更新自身。
  • 确保 PCIeCard 对象与南向设备树对象使用同一数据源(FRU 优先)。

总结

问题 说明
以哪个为准? 按照已评审的规范,应优先以 FRU 读取值(LPe32002-M2-AP)为准,而非 CSR 配置值。
南向已更新,北向未更新 北向 PCIeCard.PartNumber 未同步 FRU 值,这是当前实现的缺失,需额外适配。
同步计划 社区已有同步要求和优先级规范,但具体实施计划未在提供的资料中提及。建议依据规范自行实现同步逻辑,并考虑向社区贡献补丁。

如有进一步细节需求,您可参考 网卡 PartNumber/SerialNumber 更新优先级顺序 及 CSR 上库自检 Checklist 中的同步条款。

PCIe卡角度,从日志来看,使用了设备树方式加载,但是没有配置FruData,这种情况会从sr里取PartNumber,详见https://discuss.openubmc.cn/t/topic/4950,如果需要卡的PartNumber能从eeprom中更新,需要配置FruData,可以参考SP680的配置

component_drivers组件中会使用pldm命令去获取fru信息,然后把获取到的PartNumber值更新到设备树,但是资源树上的PCIeCard.PartNumber没有同步

代码逻辑是从资源树到设备树,只有第一次上树的时候会用设备树的东西同步资源树。不建议自己更新PartNumber

这部分代码是博通厂商南向的代码,会更新设备树的属性,北向的属性没有被同步

相关的PR: AtomGit - 全球开发者的开源社区,开源代码托管平台

厂商代码不应违反已经在社区评审过的帖子的约束。