问题描述
1.已配置”上电超时电源告警码”,及”清除系统事件”。
![]()
2.当出现上电超时事件时,web点击上电后无响应。未上电原因为BMC未下发“清除系统事件”SMC指令给cpld。
环境信息
-
操作系统:Ubuntu 24.04
-
软件版本:version:25.09
-
工具版本:bmcgo 0.7.14
1.已配置”上电超时电源告警码”,及”清除系统事件”。
![]()
2.当出现上电超时事件时,web点击上电后无响应。未上电原因为BMC未下发“清除系统事件”SMC指令给cpld。
操作系统:Ubuntu 24.04
软件版本:version:25.09
工具版本:bmcgo 0.7.14
答案内容由AI生成,仅供参考:
在系统出现上电超时事件后,通过Web界面点击上电操作无响应。经排查发现,根本原因为BMC未向下位机(如SMC/CPLD)下发“清除系统事件”的指令,导致系统无法恢复正常上电流程。
{
"Accessor_PowerOnLock": {
"Chip": "#/Smc_ExpBoardSMC",
"Offset": 469766657,
"Size": 1,
"Mask": 8,
"Type": 0,
"Value": 0
}
}
Value = 0,表示上电锁未激活。PowerOnTimeoutFlag,用于控制硬件上电锁定状态。
说明:硬件层面当前未锁定上电流程,理论上应可以上电。
| 项目 | 配置说明 |
|---|---|
| 清除单板锁存异常记录指示寄存器 | 1h: 默认状态;0h: 表示异常已记录(需写清) |
| 清除单板上电超时当前错误记录指示寄存器 | 1h: 默认状态;0h: 异常已记录(需写清) |
| 清除系统事件 - 业务系统上电超时事件 | 0h: 无效;1h: 有效 |
| 业务系统异常掉电事件 | 0h: 无效;1h: 有效 |
1h 来触发清除操作。0 0 1 0 1
0 0 1 0 1
上电超时电源自重启
异常掉电电源自重启
2h:天阵
2h:备份
1(电源上电超时自重启)
1(电源异常掉电自重启)
尽管硬件层面未锁定(Accessor_PowerOnLock.Value = 0),且系统具备清除事件能力,但在上电超时发生后,BMC未主动下发“清除系统事件”指令给SMC/CPLD,导致以下问题:
BMC与SMC通信脱节
bmc.kepler.web_backend 在处理请求时存在超时风险,且依赖远程服务(如 pcie_device)可能导致响应延迟或失败。Oms 或 Bmc_Kepler_Pgmt 服务完成事件清除流程。PowerOnTimeoutFlag 未正确刷新
PowerOnTimeoutFlag 是由 Accessor_PowerOnLock.Value 动态关联控制的(通过 D-Bus 或设备树绑定)。CPLD 超时标志未清除
| 实体 | 作用 |
|---|---|
PowerOnTimeoutFlag |
控制上电锁状态(1=锁定,0=解锁) |
Accessor_PowerOnLock |
提供硬件级上电锁状态,其值动态影响 PowerOnTimeoutFlag |
System.SystemPowerOnTmout |
上电超时事件标识 |
Bmc_Kepler_Power_Mgmt |
负责执行电源管理操作,如清除事件、发送指令到SMC |
Oms |
任务管理服务,负责协调跨组件操作,包括事件清除 |
Web操作 -> bmc.kepler.web_backend -> Oms -> Bmc_Kepler_Power_Mgmt -> SMC/CPLD (清除指令)
当前链路中断于第二或第三步,导致指令无法传递到底层硬件。
ipmcset -t maintenance -d poweronlock -v clear
ipmcset -t maint -d accycle
增强 BMC 事件处理逻辑
System.SystemPowerOnTmout 后,自动触发向SMC发送“清除系统事件”指令。CpldStatus 的轮询,在超时后自动清除 CPLD Timeout Flag。完善 Web 后端服务健壮性
bmc.kepler.web_backend 与 Bmc_Kepler_Power_Mgmt 的通信机制,避免 40+ 秒超时导致任务丢失。引入状态一致性检查
Accessor_PowerOnLock.Value 与 PowerOnTimeoutFlag 是否一致。参考文档规则:
该问题是由于 BMC在上电超时后未能正确下发“清除系统事件”指令 所致,尽管硬件锁状态正常,但系统事件标志未清除导致逻辑阻塞。
建议从事件自动清除机制、服务间通信可靠性、状态一致性校验三个方面进行系统性优化,防止类似问题再次发生。
相关链接: