系统上下电失败问题分析
更新时间: 2026/05/29
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:openUBMC 25.06;
- 涉及功能:系统上下电;
- 触发条件:web页面执行上下电操作。
- 业务表现:预期可以正常上下电;实际上下电失败。
问题复现步骤
系统侧上电情况下,在系统管理->电源&功率页面点击下电按钮,查看系统侧变化。
关键日志信息
页面显示操作失败: app.log日志报错:
定位过程
- 尝试通过busctl命令操作上电,发现上电失败;
shell
busctl --user call bmc.kepler.fructrl /bmc/kepler/Systems/1/FruCtrl/FruCtrl_1_0_00 bmc.kepler.Systems.FruCtrl FruPowerCtrl a{ss}ssy 0 On ChassisControlCommand 1打印如下报错:
确认app.log内异常打印,可以看见类PGSignal没被初始化成功;检查PGSignal所在的SR文件是否被正常加载了,PGSignal在mdbctl内能否查到;SR文件正常加载后,查看上下电是否已正常;上电会显示操作成功但系统不会上电;确认系统架构类型(tianchi);app.log里查看ForceRestart等上下电的对象有没有正常分发,结果如下,发现BMC侧的信号正常分发完成但是实际上重启失败:
确认sr中是否存在ForceReset对象,补充该对象后,功能正常。但是上电下电依然存在问题;
与CPLD对齐SMC命令字,确认BMC和CPLD的命令字一致;
BMC和CPLD如果命令字一致,且BMC已正常下发操作信号的情况下,需要CPLD进一步排查未上电或者下电成功的原因,因为信号BMC给到cpld之后,真正执行上下电操做的是CPLD.
问题原因
强制重启失败是因为SR文件中缺少ForceReset对象,上电下电功能执行失败是因为CPLD侧接收到BMC提供的信号后未执行对应的操作。
解决方案
BMC侧SR文件添加ForceReset对象,CPLD侧接收到上下电信号收执行相应的操作。