BusinessConnector的作用是什么

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

BusinessConnector 的作用及 PCIe Switch 芯片槽位配置说明

1. BusinessConnector 的作用

BusinessConnector 是 openUBMC 系统中用于定义和管理 PCIe 拓扑结构的关键配置对象,其主要功能如下:

  • PCIe 业务拓扑建立:通过定义上下行连接器(Upstream/Downstream),构建设备之间的物理与逻辑连接关系,支持多层级的 PCIe 拓扑结构。
  • 槽位映射与带宽管理
    • Slot:标识设备在系统中的物理槽位号。
    • LinkWidthMaxLinkRate:定义链路带宽(如 X16)和最大速率(如 PCIe4.0),用于性能管理和链路协商。
  • 资源关联机制
    • UpstreamResources:指定上行连接资源(如 SerDes 接口),实现与主板或 BCU 的连接。
    • RefPCIeAddrInfo:关联 PcieAddrInfo 对象,用于存储设备的 BDF(Bus, Device, Function)等地址信息。
    • RefMgmtConnector:关联管理连接器,用于设备的带外管理通信。
  • 连接类型识别
    • ConnectorType 支持 UBCUBCDDPCIe CEM 等类型,用以区分不同类型的连接结构(例如板载、扩展卡、转接板等)。

:white_check_mark: 总结BusinessConnector 是实现系统内 PCIe 设备自动发现、资源配置和链路建模的核心机制。


2. PCIe Switch 芯片扩展槽位的配置方法

当使用 PCIe Switch 芯片(如 PEX89104、PLX8749)进行链路扩展时,需通过以下方式完成配置:

(1)是否需要建模 PCIe Switch 对象?

根据当前 openUBMC 实现情况:

  • 默认未内置 PCIe Switch 类:系统目前不直接支持对 PCIe Switch 芯片的动态建模。
  • 需要人工干预建链:若未适配动态发现机制,则依赖 BIOS 或上层通过静态配置上报拓扑。
  • 建议路径:可通过 CSR 配置 + BusinessConnector 显式定义 来模拟 Switch 下挂设备的连接关系。

(2)配置流程示例(以 PEX89104 扩展5路为例)

步骤 1:添加下行 BusinessConnector 对象

{
  "BusinessConnector_Down1": {
    "Name": "Down_1",
    "Direction": "Downstream",
    "Slot": 1,
    "LinkWidth": "X8",
    "MaxLinkRate": "PCIe3.0",
    "ConnectorType": "UBCDD",
    "UpstreamResources": [
      {
        "Name": "Up_1",
        "ID": 255,
        "Offset": 8,
        "Width": 8
      }
    ],
    "RefPCIeAddrInfo": "#/PcieAddrInfo_1",
    "RefMgmtConnector": "#/Connector_PCIE_SLOT1"
  }
}

步骤 2:配置 PcieAddrInfo 实现地址映射

{
  "PcieAddrInfo_1": {
    "SlotID": 1,
    "Bus": 0x01,
    "Device": 0x00,
    "Function": 0,
    "Segment": 0,
    "VendorID": "0x10EE",
    "DeviceID": "0x903F"
  }
}

步骤 3:结合 UnitConfiguration 定义具体设备

sr 文件中通过 UnitConfigurationPCIeDevice_1NPUCard_1 等对象绑定到对应的 Slot,完成设备识别。


3. 不配置 BusinessConnector 的影响

如果未正确配置 BusinessConnector 或缺失相关对象,将导致以下问题:

问题类型 具体表现
:cross_mark: 设备无法识别 BMC 无法感知 PCIe 卡的存在,导致自发现失败。
:cross_mark: BDF 地址缺失 PcieAddrInfo 无法同步地址信息,影响驱动加载。
:cross_mark: 带外管理中断 无法通过 IPMI 或 Redfish 获取设备状态(如温度、健康、功耗)。
:cross_mark: 事件监控失效 Event_PCIeLinkSpeed 等链路异常事件无法触发或上报。
:cross_mark: 链路性能下降无告警 当发生 link speed reduce 时,系统无法检测并记录日志。
:warning: 依赖 BIOS 上报 系统会退化为依赖 BIOS “约定整机配置” 静态上报,失去动态灵活性。

:warning: 特别提示:在 v2 版本中,BusinessConnector 曾通过 BIOS 约定方式实现,但这属于 静态建链,无法支持热插拔或动态变更。


4. 建议与解决方案

:white_check_mark: 建议做法

  1. 暂不开发 PCIe Switch 类的前提下,可通过以下方式解决:

    • 使用 BusinessConnector 显式描述每个由 Switch 扩展出的 Slot。
    • 逐一对接 PcieAddrInfo 完成地址映射。
    • 在 CSR 或 PSR 中显式定义设备类型和能力。
  2. 长期方案

    • 提交 hardware-sig 议题,推动建立标准 PCIeSwitch 类模型。
    • 参考已有芯片数据(如 PLX8749)完成 Register 级建模,支持动态识别多个下游端口。

:wrench: 排查建议

  • 使用 lspci 命令查看 OS 层面是否识别设备的 BDF。
  • 检查 /var/log/bmc.log 是否有 PcieAddrInfo 同步失败日志。
  • 验证 GetPCIeCardNum() 方法返回值是否与实际一致。

5. 参考文档与资源


:white_check_mark: 总结

项目 内容
BusinessConnector 作用 构建 PCIe 拓扑、绑定地址、管理链路参数
Switch 扩展槽配置方法 显式配置多个 BusinessConnector + PcieAddrInfo
能否跳过不配? :cross_mark: 不能。否则设备无法识别,影响管理和监控
推荐方案 暂用 CSR 显式建模 → 后续推动标准化 PCIeSwitch 支持

如有进一步需求,建议 提交 hardware-sig 会议议题,联合专家共同设计兼容性更强的动态建链机制。

相关链接:

  1. pcie switch对象缺失
  2. 【教学培训篇】新增组件
  3. RAID扣卡适配求助
  4. V2的pcie switch 在openUBMC上是否有对应配置文件
  5. pcie_device | 文档中心 | openUBMC