一、PCIe拓扑建立过程
拓扑建立的主要目的是生成SlotId到PortId的关系,并填写到对应的PcieAddrInfo中。
1. 关键定义
(1) PSR:配置BCU端口和IEU端口映射关系
UnitConfiguration: 线缆白名单,配置在PSR中。承接BCU(CPU板)和IEU(Riser卡)之间的连接关系。
(2) BCU:配置串行/解串器的硬件信息,包含每条SerDes的对应的RootBDF的Device
① Serdes:CPU资源,配置在BCU的sr中。包含丝印文件的关键属性RootPortDeviceId,即PcieAddrInfo对象的PortID属性。
② BusinessConnector(BusinessConnector_CPU2UBCDD2):BCU 下行连接器,对应BCU上的UBC/UBCDD端口
(3) IEU:配置上行连接器及下行连接器,以及PCIeAddrInfo
① BusinessConnector:业务Connector,用于定义Riser对应PCIeSlot的上下行带宽和绑定的PCIeConnector,同时其中定义了UID信息,用于定位PSR中对应的UnitConfiguration。
② PCIeAddrInfo:PCIe对应的UnitConfiguration配置,与BusinessConnector绑定
2. 拓扑建立流程
3. RootBDF计算方法
RootBDF的计算方法有两种:根据 SocketID 和 PortID 在 override_root_bdf 或 BDFConfig 里查找。
(对于1630处理器的机型,对应表直接写在代码中,其他机型配置在BDFConfig里)
(1) override_root_bdf方式(pcie_device组件)
硬编码的芯片默认Root BDF,对应代码里的这个二维查找表:
override_root_bdf[SocketID][PortID] → { Bus, Device, Function }
(2) BDFConfig方式(PSR)
根据PSR文件里读到的实际值,得到RootBDF
二、相关问题
PCIe卡总线信息与OS获取到的不一致
Ø 现象描述:web上显示CX6网卡的总线信息显示与OS获取的不一致
![]()
Ø 问题分析:总线信息来自Riser卡的PCIeAddrInfo,通过mdbctl lsprop PCIeAddrInfo查看RootBDF值,确定数据不对
Ø 处理方法:
① 分析PSR中的Device是直接指定的,故Riser卡的PCIeAddrInfo的BDF是通过BDFConfig方式计算的;
② 根据PortID=32(即PSR Device)和SocketID=0查询得到bus=96,device=0,换算成16进制:”60:00.0”,与OS查询一致







