没有适配过的pcie卡,如何在web上显示在位

目前如果接入一张没有适配过的PCIE卡,但是可以接收到pmu返回的四元组信息,bmc不会默认加载一张默认的卡。请问这个是bmc配置问题还是什么问题。以下是我们的配置

        "Connector_PCIE_4": {
            "Bom": "14140130",
            "Slot": 5,
            "Position": 5,
            "Presence": 0,
            "Id": "",
            "Buses": [
                "I2cMux_9548Chan51"
            ],
            "SystemId": "${SystemId}",
            "ManagerId": "${ManagerId}",
            "ChassisId": "${ChassisId}",
            "SilkText": "PCIeSlot${Slot}",
            "IdentifyMode": 2,
            "Container": "Component_Switch",
            "Type": "PCIe"
        },

什么叫默认的卡,你提供的信息太少了,先搜索一下/var/log/framework.log看看有没有get component sr failed的报错。如果你没有Bom_id_auxid.sr,肯定是无法加载的
参考:板卡适配指南 | openUBMC,你这问题看到我有点迷惑,不适配还想在web显示在位 :head_shaking_vertically:

抱歉,没有描述清晰。我的意思是 在位可以通过pmu是否返回四元组信息来判断。所以如果pmu返回的四元组信息在bmc中没有对应的sr文件,尽管bmc没有做适配,是否也可以 类似重新指向一个默认的sr文件,将其加载起来到web上。

感觉这种需求没有太大意义,就算能显示在位,其他信息大多空白,作用不大

1 个赞

可以是可以,修改一下pcie_device的代码就可以做到

请问具体是修改哪个函数呢?

加载逻辑在这里 https://gitcode.com/openUBMC/pcie_device/blob/main/src/lualib/biz_topo/device_loader.lua#L167

具体改动的话可能要加一些逻辑,比如说判断4元组的csr是否存在,如果不在,则复制default.sr 之类的

1 个赞

可以参考这个issue GitCode - 全球开发者的开源社区,开源代码托管平台

查不到内置的sr文件就加载一个默认的

1 个赞

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

问题分析:未适配的PCIe卡无法在Web上显示在位

当接入一张未适配过的PCIe卡时,即使BMC已经通过PMU接收到该设备的四元组信息(Vendor ID、Device ID、SubVendor ID、SubDevice ID),但Web界面仍无法显示该卡在位,这通常不是BMC本身的“默认加载”功能缺失问题,而是适配流程未完成所导致。

根据您提供的Connector_PCIE_4配置,该Connector已正确配置了槽位、I2C总线、动态变量(如${SystemId})等信息,且IdentifyMode=2表示为静态识别模式。然而,仅配置Connector不足以让系统识别并展示一张新类型的PCIe卡。必须结合CSR(Component Specific Record)配置文件才能完成完整加载。


原因定位:缺少CSR配置文件

从知识库信息可知:

  • BMC不会对未知设备进行“默认加载”,必须通过SR文件(即CSR配置文件)来定义设备的识别规则和属性。

  • CSR文件名由设备的四元组信息构成,格式为:<VendorID>_<DeviceID>_<SubVendorID>_<SubDeviceID>.sr,存放于 /opt/bmc/sr/ 路径下。

  • 如果系统中没有匹配该四元组的SR文件,即使Connector在位、Presence=1,BMC也会打印类似日志:

    hwdiscovery ERROR: get component sr failed, error: Local file not found
    

    这正是您遇到的情况。

示例:社区中有用户反馈博通网卡BCM957414A4142CC因缺少14e416d7_14e41402.sr文件而导致无法加载(见Search Result #7)。


解决方案:创建并部署CSR配置文件

要使未适配的PCIe卡在Web上正常显示,需执行以下步骤:

  1. 获取设备四元组信息

    • 通过BIOS或BMC日志确认设备上报的四元组(Vendor ID、Device ID、SubVendor ID、SubDevice ID)。
    • 确保这些值与实际硬件一致。
  2. 创建CSR配置文件

    • vpd/vendor/<厂商>/ 目录下创建对应的.sr文件,例如:

      vpd/vendor/OpenUBMC/14e416d7_14e41402.sr
      
    • 文件内容应包含基本设备信息,至少包括:

      {
        "PCIeCard_1": {
          "Name": "Unknown PCIe Card",
          "Model": "Generic PCIe Device",
          "Manufacturer": "Unknown",
          "PartNumber": "N/A",
          "SerialNumber": "<=/FruData.BoardSerialNumber>",
          "VendorID": "14e4",
          "DeviceID": "16d7",
          "SubVendorID": "14e4",
          "SubDeviceID": "1402"
        }
      }
      
    • 可参考已有适配文档(如《网卡配置指南_1377.json》)完善更多属性。

  3. 确保Connector配置正确

    • 您当前的Connector_PCIE_4配置基本正确,但需注意:
      • Id 字段应留空或由系统自动填充,不应手动设置。
      • Presence 应由硬件信号或探测逻辑动态更新,若固定为0则不会触发识别。
      • 建议将 IdentifyMode 设置为 2(静态识别)以配合SR文件加载。
  4. 部署并验证

    • 将SR文件集成到BMC镜像中,并升级固件。
    • 重启后检查日志是否有“get component sr failed”错误。
    • 查看Web界面【系统信息】→【其他】→【PCIe卡】是否出现该设备。

总结

当前问题并非BMC配置错误,而是缺少必要的CSR适配文件。openUBMC系统设计上要求所有PCIe设备必须通过SR文件明确定义,才能被识别和管理。只要补充对应四元组的SR文件,并确保Connector配置正确,即可实现未适配PCIe卡在Web上的正常显示与管理。