基于2512_LTS构建的BMC
碰到一个问题:一个OCP网卡的BDF bios正常返回了:

但是BMC却没有加载这个卡,从log中看到应该是卡的四元组获取有问题:
![]()
所以想请教一下有没有查看PMU和IMU交互log的方法。
基于2512_LTS构建的BMC
碰到一个问题:一个OCP网卡的BDF bios正常返回了:

但是BMC却没有加载这个卡,从log中看到应该是卡的四元组获取有问题:
![]()
所以想请教一下有没有查看PMU和IMU交互log的方法。
答案内容由AI生成,仅供参考:
总结
要查看 PMU与IMU交互日志,应重点关注以下两个日志源:
mctpd 日志:验证MCTP通信是否正常建立,IMU是否在线。pcie_device 或 app.log 日志:搜索 Get id from PMU,确认是否成功获取OCP卡的四元组信息。
您的问题大概率出在:IMU未正确响应BMC的查询请求,或PMU未返回有效的四元组数据,导致BMC无法匹配到正确的CSR文件,最终加载失败。
建议下一步:
journalctl -u mctpd 和 grep -i "Get id from PMU" /var/log/app.log 联合分析;Bom_id_auxid.sr 配置文件是否存在且命名正确(依据四元组生成)。如有需要,可提供 mctpd 和 app.log 的相关片段进行进一步分析。
根据您提供的问题描述,您遇到的情况是:BIOS已通过IPMI命令WriteOcpCardBdfToBmc正确上报了OCP网卡的BDF地址,但BMC端未能成功加载该卡,初步怀疑是通过PMU获取PCIe设备四元组(Vendor ID, Device ID, SubVendor ID, SubDevice ID)时出现问题。这通常涉及BMC、IMU、PMU之间的通信流程。
以下是针对基于2512_LTS版本的openUBMC系统中,查看PMU与IMU交互日志的详细方法和排查建议。
您提供的日志片段表明:
[BizTopoloader] Connector is detected, Slot=13...
load-Id-AuxId=ffffffff-ffffffff
其中 Id-AuxId=80880103-8088c01 是BMC期望的标识,而 load-Id-AuxId=ffffffff-ffffffff 表示实际从硬件获取到的信息为无效值(全F),说明 BMC未能从PMU/IMU处成功读取该OCP卡的四元组信息。
根本原因通常出在 BMC → IMU → PMU 的通信链路上。
在基于2512_LTS的openUBMC系统中,PMU(Platform Management Unit) 实际上常指 IMU(Integrated Management Unit) 或其管理的服务模块。BMC通过 MCTP over SMBus 与IMU通信,IMU再与CPU侧的PMU代理交互以获取PCIe设备信息。
mctpd 服务日志 —— 核心入口mctpd(MCTP Daemon)是BMC上负责MCTP协议通信的核心守护进程,管理与IMU的连接和消息收发。
命令:
# 实时查看日志
journalctl -u mctpd -f
# 或搜索关键字
journalctl | grep -i "mctp\|pmu\|imu"
关键日志特征:
IMU上电状态通知:
mctp_mdb_mgmt.lua(267): mctp_mdb_mgmt: pmu status change to 1, OS Power ON
这表示IMU已上电并启动MCTP通信。
Endpoint发现过程:
mctpd: Received discovery response from EID=55
其中 EID=55 是某个设备(如OCP卡)在MCTP网络中的终点ID。您需要确认OCP卡对应EID是否出现。
MCTP路由表缺失警告:
若无路由信息,会出现类似:
No route to EID=55
表示MCTP路由表未正确加载。
pcie_device 组件日志 —— 设备加载流程该组件负责通过IMU从PMU查询PCIe设备的四元组信息。
命令:
journalctl -u pcie_device.service -f
# 或直接搜索app.log
grep -i "pcie_device.*Get id from PMU" /var/log/app.log
关键日志示例:
pcie_device NOTICE: device_loader.lua(130): [BizTopoLoader] Get id from PMU, vid:6629, did:55298, sub_vid:6629, sub_did:16384
如果看到此日志,则说明成功从PMU获取了四元组。
如果未看到或返回 vid:ffff, did:ffff...,则说明 PMU未返回有效数据。
可通过Redfish或IPMI查看IMU状态,或检查其版本信息:
IPMI命令(调试用):
ipmitool raw 0x30 0x90 0x22 0xf0 # 查询IMU状态
Redfish接口:
GET /redfish/v1/Systems/system/LogServices/IMUHealth
BMC根据 PcieAddrInfo 对象定义的BDF查找设备。请确认您的OCP卡对应对象(如 PcieAddrInfo_OCP_1)中 Bus/Device/Function 是否与BIOS上报的一致。
查询路径:
# 检查CSR配置是否匹配
cat /etc/bmc/CSR/OCPCard_1.json
确保其中的 SlotID、Bus 等字段与物理槽位和BDF对应。
| 步骤 | 操作 | 目的 |
|---|---|---|
| 1 | 确认IMU是否上电 | 查看 mctpd 日志是否有 OS Power ON |
| 2 | 确认MCTP通信是否建立 | 查看是否收到IMU的Discovery响应 |
| 3 | 检查MCTP路由表 | 使用 mctp-route show 查看是否有到目标EID的路由 |
| 4 | 查看 pcie_device 是否调用PMU |
搜索 Get id from PMU 日志 |
| 5 | 确认返回的四元组是否有效 | 是否为全F(无效) |
| 6 | 检查CSR文件名是否匹配四元组 | Bom_id_auxid.sr 文件是否存在且命名正确 |
| 7 | 确认BIOS已发送正确IPMI命令 | 在BMC端抓包或查看IPMI接收日志 |
WriteOcpCardBdfToBmc命令的用途要查看 PMU与IMU交互日志,应重点关注以下两个日志源:
mctpd 日志:验证MCTP通信是否正常建立,IMU是否在线。pcie_device 或 app.log 日志:搜索 Get id from PMU,确认是否成功获取OCP卡的四元组信息。
您的问题大概率出在:IMU未正确响应BMC的查询请求,或PMU未返回有效的四元组数据,导致BMC无法匹配到正确的CSR文件,最终加载失败。
建议下一步:
journalctl -u mctpd 和 grep -i "Get id from PMU" /var/log/app.log 联合分析;Bom_id_auxid.sr 配置文件是否存在且命名正确(依据四元组生成)。如有需要,可提供 mctpd 和 app.log 的相关片段进行进一步分析。
1)首先执行 maint_debug_cli进入debug模式
2)attach ipmi
X 表示要抓取的消息通道;ipmbeth是与HMM、交换板通信通道;bt是与BIOS通信;ipmb是与ME通信;rmcp+是LAN/LANPLUS通信; edma是带内的PCIe虚拟网络
Y表示要过滤的功能码
Z表示要过滤的命令字