问题描述
920L模组上,BIOS与BMC在启动过程中出现IPMI命令通信失败。
现象为同一轮启动里,大部分命令失败(Completion Code 异常或超时),失败覆盖多个业务命令(读取信息、上报 DIMM等),BMC是基于2503版本开发的。
对比情况:
-
客户机器上使用BIOS+V2版本iBMC,通信正常;
-
openUBMC版本刷在其他客户920X机器上通信正常;
截图
os串口
问题描述
920L模组上,BIOS与BMC在启动过程中出现IPMI命令通信失败。
现象为同一轮启动里,大部分命令失败(Completion Code 异常或超时),失败覆盖多个业务命令(读取信息、上报 DIMM等),BMC是基于2503版本开发的。
对比情况:
客户机器上使用BIOS+V2版本iBMC,通信正常;
openUBMC版本刷在其他客户920X机器上通信正常;
os串口
答案内容由AI生成,仅供参考:
920L模组上出现的BIOS与BMC通信异常,根本原因很可能为:
openUBMC在920L平台上的IPMI命令注册不全、BTC驱动不兼容、以及VPD配置缺失,共同导致BIOS发出的命令被拒绝或无法送达。
建议采取“先通路、再通协议、最后验功能”的排查路径:
ipmi_core服务可用;最终可通过在QEMU模拟OpenUBMC S920X20 iBMC环境对比行为,进一步隔离硬件与软件因素。
在920L模组上,BIOS与BMC在系统启动过程中出现IPMI命令通信失败的问题。现象表现为:在同一轮启动中,大部分IPMI命令执行失败,表现为Completion Code异常或超时,且该问题覆盖多个业务命令(如读取信息、上报DIMM信息等)。当前BMC基于2503版本开发。
根据提供的OS串口日志,可归纳出以下几类关键错误:
日志中频繁出现多种非标准或错误的Completion Code,表明BMC返回了非预期响应或直接拒绝命令:
CompletionCode 0xD5 ERROR:
指令不支持当前状态,特别是在BT通道(in-band)中执行时。知识库中描述:当在BT通道内不带通道号执行ipmitool user priv命令时会返回此码,说明BMC判定操作不合法或状态不符。
CompletionCode 0xD6 ERROR:
命令被禁用且无法执行。知识库指出openUBMC在执行BMCSet_Copyright等命令时会返回此码,表明该功能被明确关闭。若多个业务命令均返回此码,说明相关OEM IPMI命令可能未被启用或注册。
CompletionCode 0xFF ERROR:
通用错误码,表示命令处理失败,通常与底层通信或参数校验失败有关。
CompletionCode 0xC9 ERROR 和 0xCC ERROR:
非标准IPMI完成码,可能为厂商自定义错误,需结合BMC固件日志进一步分析其具体含义。
IPMI over BT(Block Transfer)是主机CPU与BMC之间in-band通信的核心通道。日志显示大量超时和底层传输失败:
[IpmiInterface] BtExecuteIpmiCmd TIMEOUT:
BTC通信超时,直接导致命令无响应。知识库确认此错误属于“IPMI Execute Fail”的典型原因。
[IpmiInterfaceDxe] BtReadTransaction failed. Returns Buffer Too Small:
BIOS侧尝试读取BMC响应时缓冲区不足,可能由于BMC返回的数据长度超过BIOS预分配缓冲区,或协议不一致。
Cannot convert logical channel, skt:0, ch:0:
逻辑通道转换失败,可能与LAN配置或RMCP+会话初始化问题相关。怀疑底层ipmitool lan print 1类操作会触发BT通道拥堵或异常。
Device Error及RecData Empty,表明:
bmc.kepler.ipmi_core的D-Bus服务未注册成功。知识库指出,若bmc.kepler.ipmi_core依赖的.service文件缺失,将导致IPMI核心功能初始化失败。
日志中的
BTC Communication Timeout及BT Execute Timeout是高频问题。
多个命令返回
Completion Code 0xD6(命令被禁用)。
BMCSet_Copyright命令明确返回0xD6,说明openUBMC系统存在命令级管控策略。92h(BIOS类命令)或30h/93h,若未在配置中启用则会被拒绝。尽管BIOS在其他平台正常,但在920L + openUBMC组合中异常。
board_name=S920X20等参数,否则可能无法获取CPU/内存信息——暗示平台适配依赖精确的VPD设置。
Buffer Too Small错误指向协议层兼容性问题。
MAX_IPMI_BUFFER_SIZE定义是否足够(建议≥256字节)。dmesg日志是否出现BTC驱动加载失败(参考文档btc驱动加载失败定位方式求助);ipmitool lan print 1,观察是否引发BT超时——若如此,说明BT通道负载过高或存在竞争。NetFn=92h:BIOS类命令(如上报DIMM信息);NetFn=30h/93h:通用OEM命令;bmc.kepler.ipmi_core服务正常运行,可通过busctl list --user | grep ipmi_core确认;manifest.yml中明确配置920L模组信息:- conan: "vpd/1.80.192@openubmc/stable"
options:
board_name: S920L
ReportPcieCardBDFInfoToBMC等关键命令;ipmcget -t sensor -d list验证传感器与FRU信息是否可读。#define MAX_IPMI_BUFFER_SIZE 512
BtReadTransaction实现是否支持自动重试与分段读取。bmc_core和ipmi_core的详细日志;ipmi_core.db损坏导致服务未启动;LLDP port name detection issue等导致初始化延迟;RSA_private_decrypt failed等安全认证失败。920L模组上出现的BIOS与BMC通信异常,根本原因很可能为:
openUBMC在920L平台上的IPMI命令注册不全、BTC驱动不兼容、以及VPD配置缺失,共同导致BIOS发出的命令被拒绝或无法送达。
建议采取“先通路、再通协议、最后验功能”的排查路径:
ipmi_core服务可用;最终可通过在QEMU模拟OpenUBMC S920X20 iBMC环境对比行为,进一步隔离硬件与软件因素。
带内执行ipmi命令是通的
请问是什么场景?AC还是仅OS侧复位重启,若只是OS侧复位重启,则可在复位后,在bmc侧打开trace收集ipmi交互内容,命令为 mdbctl traceipmi start file bt
若在 bios 阶段有消息发往 bmc 且 bmc 正常收到且回复,则会在 /tmp 下生成文件 ipmi.txt。若有该文件生成则说明 bt 通道交互正常,那么针对你这个问题则需要具体命令具体分析
![]()
ipmi.txt文件生成的,但是我使用ipmitool 测试几条命令好像都是通的,执行失败的几条命令在其他正常机器上也是相同的报错
3.txt (8.2 KB)
好的,请明确一下失败的命令的具体内容,以明确是哪一条命令并根据相应回调实现进一步确认执行失败原因