PCIE拓扑构建报错:No matching src BizConnector found

问题描述

在做 PCIE 卡适配时:

  • 新增了 PcieAddrInfoBizConnector

  • PCIE 资源来自 BCU

pcie_device 构建拓扑时报错:

No matching src BizConnector found: Slot=4, position=010101

所有 PcieAddrInfo 都匹配失败。


当前情况

  • PcieAddrInfo 已正常生成

  • 能进入 match_src_connector 流程

  • UnitConfiguration 已加载(length=1)

  • 但始终找不到匹配的 BizConnector


关键配置

BCU.SR

"BusinessConnector_4": {
    "Name": "Down_4",
    "Direction": "Downstream",
    "Slot": 4,
    "RefMgmtConnector": "#/Connector_PCIE_4",
    "RefPCIeAddrInfo": "#/PcieAddrInfo_4"
}
"Connector_PCIE_4": {
    "Slot": 4,
    "Position": 4,
    "Type": "PCIe"
}
"PcieAddrInfo_4": {
    "SlotID": 4,
    "PortID": 4,
    "ContainerSlot": "${Slot}",
    "ContainerUID": "00000001020302071127",
    "ContainerUnitType": "BCU"
}

PSR(UnitConfiguration)

"UnitConfiguration_BCU1": {
    "SlotType": "BCU",
    "SlotNumber": 1,
    "Configurations": [
        {
            "UID": "00000001020302071127",
            "SrcPortName": ["A3a", "A3c"],
            "TargetPortID": [17, 18],
            "Slot": [1]
        }
    ]
}

当前数据中:

  • PcieAddrInfo.PortID = 4

  • Connector.Position = 4

  • 但:

TargetPortID = [17, 18]
  1. TargetPortID 应该填什么?

    • 是不是应该和 PcieAddrInfo.PortID(当前为4)一致?

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

总结

问题 原因 解决方案
No matching src BizConnector found TargetPortIDPcieAddrInfo.PortID 不一致 TargetPortID 改为 [4]
拓扑匹配失败 端口映射规则错误 确保 Configurations 中的 TargetPortID 与实际设备 PortID 一致

结论:TargetPortID 必须与 PcieAddrInfo.PortID 一致。否则无法完成 PCIe 业务拓扑建立。

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

PCIE拓扑构建报错 No matching src BizConnector found 问题分析

问题描述

在进行 PCIe 卡适配时,系统出现如下错误:

No matching src BizConnector found: Slot=4, position=010101

尽管已正确配置 PcieAddrInfoBizConnector,且 UnitConfiguration 已加载(Configurations 长度为 1),但在 pcie_device 组件构建 PCIe 业务拓扑时始终无法匹配到对应的源端 BizConnector,导致所有 PcieAddrInfo 匹配失败。


当前配置分析

:package: BCU.SR 配置

"BusinessConnector_4": {
    "Name": "Down_4",
    "Direction": "Downstream",
    "Slot": 4,
    "RefMgmtConnector": "#/Connector_PCIE_4",
    "RefPCIeAddrInfo": "#/PcieAddrInfo_4"
}

"Connector_PCIE_4": {
    "Slot": 4,
    "Position": 4,
    "Type": "PCIe"
}

"PcieAddrInfo_4": {
    "SlotID": 4,
    "PortID": 4,
    "ContainerSlot": "${Slot}",
    "ContainerUID": "00000001020302071127",
    "ContainerUnitType": "BCU"
}

:puzzle_piece: PSR(UnitConfiguration)配置

"UnitConfiguration_BCU1": {
    "SlotType": "BCU",
    "SlotNumber": 1,
    "Configurations": [
        {
            "UID": "00000001020302071127",
            "SrcPortName": ["A3a", "A3c"],
            "TargetPortID": [17, 18],
            "Slot": [1]
        }
    ]
}

根本原因分析

:magnifying_glass_tilted_left: 核心问题:TargetPortIDPcieAddrInfo.PortID 不匹配

  • PcieAddrInfo_4.PortID = 4
    表示该 PCIe 地址信息对象关联的是 Port 4

  • Configurations.TargetPortID = [17, 18]
    表示期望从目标端(下游设备)接收到的 Port ID 列表为 17 和 18。

两者完全不一致,导致 拓扑匹配失败


详细机制说明

:white_check_mark: PCIe 业务拓扑建立流程

  1. 加载 UnitConfiguration:从 PSR 加载 Configurations 列表。
  2. 发现 PcieAddrInfo:获取每个 PCIe 插槽的地址信息(含 PortID, SlotID, UID)。
  3. 绑定 BusinessConnector:将 PcieAddrInfo 与对应的 BusinessConnector 关联。
  4. 执行 Topology Matching
    • 通过 ContainerUID 匹配 UnitConfiguration 中的配置项。
    • 检查 SrcPortName 对应的连接器是否存在。
    • 关键步骤:验证 TargetPortID 是否等于 PcieAddrInfo.PortID
    • 如果不匹配 → 报错 No matching src BizConnector found

据知识库内容:“PCIe业务拓扑建立是通过Topology Matching方法实现的,依赖Configurations中的白名单和端口映射规则。”


正确配置原则

项目 正确取值依据
PcieAddrInfo.PortID 应设置为下游 PCIe 设备实际使用的 SerDes Port 编号
TargetPortID 必须与对应 PcieAddrInfo 中的 PortID严格一致
SrcPortName 对应上游 BizConnector 所属的 SerDes 名称(如 "A3a")。

:white_check_mark: 解决方案

:check_mark: 修改 TargetPortID 以匹配 PcieAddrInfo.PortID

当前 PcieAddrInfo_4.PortID = 4,因此应修改 UnitConfiguration 中的 TargetPortID4

"UnitConfiguration_BCU1": {
    "SlotType": "BCU",
    "SlotNumber": 1,
    "Configurations": [
        {
            "UID": "00000001020302071127",
            "SrcPortName": ["A3a", "A3c"],
            "TargetPortID": [4],    ← 修改此处
            "Slot": [1]
        }
    ]
}

若实际有多个端口,请填写多个匹配值,例如 [4,5],但必须包含 PcieAddrInfo.PortID


:check_mark: 其他建议检查项

  1. 确认 RefPCIeAddrInfo 正确引用
    确保 BusinessConnector_4.RefPCIeAddrInfo 指向正确的 PcieAddrInfo_4

  2. 检查 position 一致性
    错误日志中提到 position=010101,但 Connector_PCIE_4.Position = 4,可能存在格式或解析不一致。建议确认:

    • position 是否应为字符串 "01010104" 格式?
    • 系统是否使用 SlotPosition 联合定位?
  3. 验证 ContainerSlot 替换逻辑
    "ContainerSlot": "${Slot}" 应在运行时被替换为实际槽位号(4),需确保解析机制正常。

  4. 日志定位
    错误来自 biz_topo.lua(666),可进一步查看该位置调用 match_src_connector() 的逻辑,确认匹配条件是否严格依赖 TargetPortID == PortID


总结

问题 原因 解决方案
No matching src BizConnector found TargetPortIDPcieAddrInfo.PortID 不一致 TargetPortID 改为 [4]
拓扑匹配失败 端口映射规则错误 确保 Configurations 中的 TargetPortID 与实际设备 PortID 一致

结论:TargetPortID 必须与 PcieAddrInfo.PortID 一致。否则无法完成 PCIe 业务拓扑建立。

看下ai助手的分析,把UnitConfiguration_BCU1 的TargetPortID 中添加 【4】试下