下电正常,但上电需要大概两三分钟才能成功

// 此模板仅供参考,如果不适用可以修改

问题描述

bmc页面发送下电请求相应很快,但是上电需要等大概两三分钟才能成功
上电时间较长的相关日志如下


2026-05-22 07:38:48.607221 fructrl NOTICE: fructrl_obj_mgnt.lua(248): [System:1]call PowerCtrl method, PowerCtrlType=On, RestartCause=ChassisControlCommand, FruID=0.
2026-05-22 07:38:48.607464 fructrl NOTICE: fructrl_obj_mgnt.lua(40): host 1 call power ctrl, ctrl_type=On, reason=ChassisControlCommand, fruid=0
2026-05-22 07:38:48.607736 fructrl NOTICE: powerapi.lua(153): [System:1]PowerCtrl is called by bmc.kepler.web_backend
2026-05-22 07:38:48.607993 fructrl NOTICE: powerapi.lua(157): [System:1]pctrl_type=On, restart_cause=ChassisControlCommand, fruid=0
2026-05-22 07:38:48.608921 fructrl NOTICE: pwr_cycle.lua(39): [System:1]cycle interrupt flag is set to true!
2026-05-22 07:38:48.612383 fructrl NOTICE: ctrl_state.lua(61): [System:1]From NoAction to Oning.
2026-05-22 07:38:48.620183 fructrl NOTICE: powerapi.lua(184): CurrentRestartType=0
2026-05-22 07:38:48.621525 fructrl NOTICE: therm_trip.lua(73): [System:1]Start to clear therm trip......
2026-05-22 07:38:48.715383 fructrl ERROR: therm_trip.lua(79): [System:1]clear therm trip failed, err:BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_bus/init.lua:226: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/mc/signal.lua:257: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:74: chip: Smc_CpuBrdSMC_0101, bus: I2c_1, write failed: i2c.lua:116: response error, i2c read fail, ret: 5, input:{"offsetWidth":1,"addrWidth":1,"addr":96,"rw_type":0,"offset":32,"drv_write_delay":0,"type":1,"smc_target":1,"mask":4,"has_error":false,"name":"Smc_CpuBrdSMC_0101","len":6,"requestor":"bmc.kepler.hwproxy","is_trace":false,"buffer":"\u0004\f\u00005\u0000\u0000"}
2026-05-22 07:38:48.715617 fructrl NOTICE: record_fault.lua(33): [System:1]Start to clear record fault......
2026-05-22 07:38:48.878250 fructrl ERROR: record_fault.lua(40): [System:1]clear record fault failed, err:BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_bus/init.lua:226: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/mc/signal.lua:257: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:74: chip: Smc_CpuBrdSMC_0101, bus: I2c_1, write failed: i2c.lua:116: response error, i2c read fail, ret: 5, input:{"offsetWidth":1,"addrWidth":1,"addr":96,"rw_type":0,"offset":32,"drv_write_delay":0,"type":1,"smc_target":1,"mask":2,"has_error":false,"name":"Smc_CpuBrdSMC_0101","len":6,"requestor":"bmc.kepler.hwproxy","is_trace":false,"buffer":"\u0004\f\u0000\u0000O"}
2026-05-22 07:38:48.878595 fructrl NOTICE: fructrl.lua(75): [System:1]wait PwrOnLocked unlock...
2026-05-22 07:38:48.878963 fructrl NOTICE: fructrl.lua(82): [System:1]Quit wait_pwronlocked_unlock already.
2026-05-22 07:38:48.879205 fructrl NOTICE: fructrl.lua(106): [System:1]Send pre-poweron broadcast after all locks are unlocked.

2026-05-22 07:38:51.875949 fructrl NOTICE: fructrl.lua(124): [System:1]Power on after all locks are unlocked.
2026-05-22 07:38:51.876555 fructrl NOTICE: hotswap_state.lua(89): [System:1]Current event is FruInsertionCriteriaMet, state is M1, uptime: 1079s.
2026-05-22 07:38:51.876813 fructrl NOTICE: hotswap_state.lua(93): [System:1]Move M1 to M2, uptime: 1079s.
2026-05-22 07:38:51.974629 fructrl NOTICE: fructrl.lua(145): [System:1]execute power on
2026-05-22 07:38:51.976729 fructrl NOTICE: pwr_button.lua(51): [System:1]prepate to send short button signal through hwproxy Accessor
2026-05-22 07:38:51.979886 fructrl NOTICE: hotswap_state.lua(106): [System:1]Current event is FruActivated, state is M2, uptime: 1079s.
2026-05-22 07:38:51.980214 fructrl NOTICE: hotswap_state.lua(110): [System:1]Move M2 to M3, uptime: 1079s.
2026-05-22 07:38:53.600217 fructrl NOTICE: pwr_button.lua(55): [System:1]Notify fru0 cpld to send short button signal through hwproxy Accessor
2026-05-22 07:38:53.600635 fructrl NOTICE: fructrl.lua(65): [System:1]Set sys_reset_flag to true
2026-05-22 07:38:53.601101 fructrl NOTICE: fructrl.lua(160): [System:1]Powering on, the poweron timeout is (10) seconds
2026-05-22 07:39:03.591734 fructrl NOTICE: pwr_button.lua(67): [System:1]prepate to send long button signal through hwproxy Accessor
2026-05-22 07:39:05.371624 fructrl NOTICE: pwr_button.lua(71): [System:1]Notify cpld to send long button signal through hwproxy Accessor
2026-05-22 07:39:10.364411 fructrl ERROR: fructrl.lua(185): [System:1]Power on is over time! Power on fail!
2026-05-22 07:39:10.365386 fructrl NOTICE: fructrl.lua(145): [System:1]execute power on
2026-05-22 07:39:10.366006 fructrl NOTICE: pwr_button.lua(51): [System:1]prepate to send short button signal through hwproxy Accessor
2026-05-22 07:39:12.022185 fructrl NOTICE: pwr_button.lua(55): [System:1]Notify fru0 cpld to send short button signal through hwproxy Accessor
2026-05-22 07:39:12.022522 fructrl NOTICE: fructrl.lua(65): [System:1]Set sys_reset_flag to true
2026-05-22 07:39:12.022880 fructrl NOTICE: fructrl.lua(160): [System:1]Powering on, the poweron timeout is (10) seconds
2026-05-22 07:39:22.013536 fructrl NOTICE: pwr_button.lua(67): [System:1]prepate to send long button signal through hwproxy Accessor
2026-05-22 07:39:23.541025 fructrl NOTICE: pwr_button.lua(71): [System:1]Notify cpld to send long button signal through hwproxy Accessor
2026-05-22 07:39:28.537539 fructrl ERROR: fructrl.lua(185): [System:1]Power on is over time! Power on fail!
2026-05-22 07:39:28.538487 fructrl NOTICE: fructrl.lua(145): [System:1]execute power on
2026-05-22 07:39:28.539212 fructrl NOTICE: pwr_button.lua(51): [System:1]prepate to send short button signal through hwproxy Accessor
2026-05-22 07:39:30.310028 fructrl NOTICE: pwr_button.lua(55): [System:1]Notify fru0 cpld to send short button signal through hwproxy Accessor
2026-05-22 07:39:30.310483 fructrl NOTICE: fructrl.lua(65): [System:1]Set sys_reset_flag to true
2026-05-22 07:39:30.310914 fructrl NOTICE: fructrl.lua(160): [System:1]Powering on, the poweron timeout is (10) seconds
2026-05-22 07:39:40.303708 fructrl NOTICE: pwr_button.lua(67): [System:1]prepate to send long button signal through hwproxy Accessor
2026-05-22 07:39:42.063496 fructrl NOTICE: pwr_button.lua(71): [System:1]Notify cpld to send long button signal through hwproxy Accessor
2026-05-22 07:39:47.057609 fructrl ERROR: fructrl.lua(185): [System:1]Power on is over time! Power on fail!
2026-05-22 07:39:47.058475 fructrl ERROR: ctrl_state.lua(198): [System:1]Power on timeout, change status to off
2026-05-22 07:39:47.060367 fructrl NOTICE: ctrl_state.lua(87): [System:1]From Oning to NoAction.
2026-05-22 07:39:47.074312 firmware_mgmt NOTICE: active_manage.lua(112): power_state_change_proc: cur reset type [SoftReset], fructrl type[Systems].
2026-05-22 07:39:47.075075 firmware_mgmt NOTICE: active_single_host_fructrl.lua(75): active_single_host_fructrl check exist power cycle
2026-05-22 07:39:47.076579 firmware_mgmt NOTICE: active_single_host_fructrl.lua(84): get PowerCycleType = 0
2026-05-22 07:39:47.085640 firmware_mgmt NOTICE: active_single_host_fructrl.lua(46): active_single_host_fructrl get power lock obj
2026-05-22 07:39:47.093808 fructrl NOTICE: fructrl_obj_mgnt.lua(257): [System:1]set poweron lock, pwronlocked=false, timeout=65535, appname=firmware_mgmt, reason=active
2026-05-22 07:39:47.593723 fructrl NOTICE: hotswap_state.lua(136): [System:1]Current event is FruPowerFailure, state is M3, uptime: 1135s.
2026-05-22 07:39:47.593994 fructrl NOTICE: hotswap_state.lua(154): [System:1]Move M3 to M6, uptime: 1135s.
2026-05-22 07:39:47.702697 fructrl NOTICE: pwr_mutation.lua(107): [System:1]Detect fru0 payload power dropped, hotswap:M3 pwr_state:OFF pg_state:0
2026-05-22 07:39:47.718995 fructrl NOTICE: hotswap_state.lua(231): [System:1]Current event is FruPowerFailure, state is M6, uptime: 1135s.
2026-05-22 07:39:47.719882 fructrl NOTICE: hotswap_state.lua(236): [System:1]Move M6 to M1, uptime: 1135s.
2026-05-22 07:39:52.673473 fructrl NOTICE: fructrl_obj_mgnt.lua(257): [System:1]set poweron lock, pwronlocked=false, timeout=65535, appname=Upgrade, reason=VerifyFlash
2026-05-22 07:40:16.856842 fructrl NOTICE: pg_signal.lua(72): ==== [System:1]PowerGDStatus changed to power on ====
2026-05-22 07:40:17.693406 fructrl NOTICE: pwr_mutation.lua(79): [System:1]map event type = FruInsertionCriteriaMet
2026-05-22 07:40:17.694118 fructrl NOTICE: hotswap_state.lua(89): [System:1]Current event is FruInsertionCriteriaMet, state is M1, uptime: 1165s.
2026-05-22 07:40:17.694444 fructrl NOTICE: hotswap_state.lua(93): [System:1]Move M1 to M2, uptime: 1165s.
2026-05-22 07:40:17.809879 fructrl NOTICE: hotswap_state.lua(106): [System:1]Current event is FruActivated, state is M2, uptime: 1165s.
2026-05-22 07:40:17.810253 fructrl NOTICE: hotswap_state.lua(110): [System:1]Move M2 to M3, uptime: 1165s.
2026-05-22 07:40:18.801608 fructrl NOTICE: pwr_mutation.lua(79): [System:1]map event type = FruActivatedCompleted
2026-05-22 07:40:18.802430 fructrl NOTICE: hotswap_state.lua(136): [System:1]Current event is FruActivatedCompleted, state is M3, uptime: 1166s.
2026-05-22 07:40:18.803236 fructrl NOTICE: hotswap_state.lua(140): [System:1]Move M3 to M4, uptime: 1166s.
2026-05-22 07:40:32.341050 fructrl NOTICE: fructrl.lua(683): [System:1]Refresh system reset detected 1
2026-05-22 07:40:32.342249 fructrl NOTICE: sys_reset.lua(66): [System:1]detected sys reset 1
2026-05-22 07:40:32.342645 fructrl NOTICE: fructrl.lua(65): [System:1]Set sys_reset_flag to false
2026-05-22 07:41:02.330563 fructrl NOTICE: sys_reset.lua(45): [System:1]clear system reset detected
2026-05-22 07:41:03.899774 fructrl NOTICE: sys_reset.lua(60): [System:1]SetSysRstDetected is 0
2026-05-22 07:41:03.900419 fructrl NOTICE: fructrl.lua(683): [System:1]Refresh system reset detected 0
2026-05-22 07:41:03.901566 fructrl NOTICE: sys_reset.lua(66): [System:1]detected sys reset 0

其他项目正常上电的日志对比如下

1970-01-02 00:00:41.867614 fructrl NOTICE: fructrl_obj_mgnt.lua(248): [System:1]call PowerCtrl method, PowerCtrlType=On, RestartCause=ChassisControlCommand, FruID=0.
1970-01-02 00:00:41.867838 fructrl NOTICE: fructrl_obj_mgnt.lua(40): host 1 call power ctrl, ctrl_type=On, reason=ChassisControlCommand, fruid=0
1970-01-02 00:00:41.868055 fructrl NOTICE: powerapi.lua(153): [System:1]PowerCtrl is called by bmc.kepler.web_backend
1970-01-02 00:00:41.868225 fructrl NOTICE: powerapi.lua(157): [System:1]pctrl_type=On, restart_cause=ChassisControlCommand, fruid=0
1970-01-02 00:00:41.868921 fructrl NOTICE: pwr_cycle.lua(39): [System:1]cycle interrupt flag is set to true!
1970-01-02 00:00:41.869322 fructrl NOTICE: ctrl_state.lua(61): [System:1]From NoAction to Oning.
1970-01-02 00:00:41.872464 fructrl NOTICE: powerapi.lua(184): CurrentRestartType=0
1970-01-02 00:00:41.873066 fructrl NOTICE: therm_trip.lua(73): [System:1]Start to clear therm trip......
1970-01-02 00:00:42.005095 fructrl NOTICE: record_fault.lua(33): [System:1]Start to clear record fault......
1970-01-02 00:00:42.004858 fructrl ERROR: therm_trip.lua(79): [System:1]clear therm trip failed, err:BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_bus/init.lua:226: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/mc/signal.lua:257: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:74: chip: Smc_CpuBrdSMC_0101, bus: I2c_1, write failed: smc.lua:190: request error, error para, para: 0, size: 2, read_len: 1
1970-01-02 00:00:42.807875 fructrl NOTICE: fructrl.lua(75): [System:1]wait PwrOnLocked unlock...
1970-01-02 00:00:42.808211 fructrl NOTICE: fructrl.lua(82): [System:1]Quit wait_pwronlocked_unlock already.
1970-01-02 00:00:42.808402 fructrl NOTICE: fructrl.lua(106): [System:1]Send pre-poweron broadcast after all locks are unlocked.
1970-01-02 00:00:45.805539 fructrl NOTICE: fructrl.lua(124): [System:1]Power on after all locks are unlocked.
1970-01-02 00:00:45.806168 fructrl NOTICE: hotswap_state.lua(89): [System:1]Current event is FruInsertionCriteriaMet, state is M1, uptime: 86446s.
1970-01-02 00:00:45.806404 fructrl NOTICE: hotswap_state.lua(93): [System:1]Move M1 to M2, uptime: 86446s.
1970-01-02 00:00:45.948141 fructrl NOTICE: fructrl.lua(145): [System:1]execute power on
1970-01-02 00:00:45.950884 fructrl NOTICE: pwr_button.lua(51): [System:1]prepate to send short button signal through hwproxy Accessor
1970-01-02 00:00:45.954772 fructrl NOTICE: hotswap_state.lua(106): [System:1]Current event is FruActivated, state is M2, uptime: 86446s.
1970-01-02 00:00:45.955198 fructrl NOTICE: hotswap_state.lua(110): [System:1]Move M2 to M3, uptime: 86446s.
1970-01-02 00:00:47.660677 fructrl NOTICE: pg_signal.lua(72): ==== [System:1]PowerGDStatus changed to power on ====
1970-01-02 00:00:47.661426 fructrl NOTICE: pg_signal.lua(75): [System:1]bmc execute poweron set PwrStateBeforeACLost to true
1970-01-02 00:00:47.714422 fructrl NOTICE: pwr_button.lua(55): [System:1]Notify fru0 cpld to send short button signal through hwproxy Accessor
1970-01-02 00:00:47.715007 fructrl NOTICE: fructrl.lua(65): [System:1]Set sys_reset_flag to true
1970-01-02 00:00:47.715412 fructrl NOTICE: fructrl.lua(160): [System:1]Powering on, the poweron timeout is (10) seconds
1970-01-02 00:00:47.889082 fructrl NOTICE: fructrl.lua(683): [System:1]Refresh system reset detected 1
1970-01-02 00:00:47.891090 fructrl NOTICE: sys_reset.lua(66): [System:1]detected sys reset 1
1970-01-02 00:00:47.891645 fructrl NOTICE: fructrl.lua(65): [System:1]Set sys_reset_flag to false
1970-01-02 00:00:48.120508 fructrl NOTICE: pwr_mutation.lua(79): [System:1]map event type = FruActivatedCompleted
1970-01-02 00:00:48.119402 fructrl NOTICE: ctrl_state.lua(87): [System:1]From Oning to NoAction.
1970-01-02 00:00:48.121236 fructrl NOTICE: hotswap_state.lua(136): [System:1]Current event is FruActivatedCompleted, state is M3, uptime: 86449s.
1970-01-02 00:00:48.121477 fructrl NOTICE: hotswap_state.lua(140): [System:1]Move M3 to M4, uptime: 86449s.
1970-01-02 00:00:48.261098 fructrl NOTICE: hotswap_state.lua(167): [System:1]Current event is FruActivatedCompleted, state is M4, uptime: 86449s.
1970-01-02 00:01:17.892908 fructrl NOTICE: sys_reset.lua(45): [System:1]clear system reset detected
1970-01-02 00:01:19.479084 fructrl NOTICE: sys_reset.lua(60): [System:1]SetSysRstDetected is 0
1970-01-02 00:01:19.479810 fructrl NOTICE: fructrl.lua(683): [System:1]Refresh system reset detected 0
1970-01-02 00:01:19.482129 fructrl NOTICE: sys_reset.lua(66): [System:1]detected sys reset 0

对比分析可以看出,上电时间较长的项目日志频繁出现
[System:1]Power on is over time! Power on fail!
结合代码可以看到如下注释

-- 上电超时表示硬件电路故障,仅记录日志,需要电路修复后通过清除cpld的超时标记或AC才能恢复。
-- 沿用V2处理方式,防误触功能开启后也可以上电

这里的硬件电路故障一般指什么,还有防误触功能又是什么

答案内容由AI生成,仅供参考:
好的,根据您提供的上下文信息,我将对您的问题进行详细解答。

问题一:代码注释中提到的“硬件电路故障”一般指什么?

根据上下文信息,硬件电路故障 是一个广义的说法,它直接导致系统上电超时。具体来说,这种故障可能涉及以下几个层面:

  1. 电源相关电路问题:这是最直接的可能原因。例如,主板上的电源管理芯片、MOSFET管、稳压模块等发生故障,导致无法产生或维持关键的电源信号(如 sys_pwrgood 寄存器信号)。如上下文所述:“比如有个电源短路故障了,单板一直没有发出 sys_pwrgood 寄存器给 BMC,就是上电失败了。” 这种情况会导致CPLD检测不到上电完成信号,从而引发超时。

  2. 信号通路和时序问题:上电过程依赖于严格的信号时序和正确的硬件初始化。如果某个信号(如PSOKVIN_PG)未能按预期变化,或者CPLD与南桥(PCH)之间的通信、脉冲发送出现问题,都可能导致上电失败。上下文指出:“上电超时,表示硬件电路有问题,额外的强制下电并不能解决问题。这种场景需要修复电路后,通过清除 CPLD 的超时标记或者 AC 才能恢复。” 这表明问题根源在硬件电路层面,而非软件可解决。

  3. 关键硬件组件故障:虽然不特指某一个组件,但CPU、南桥、内存、甚至PCIe设备等核心硬件的电气故障或初始化失败,都可能在上电自检(POST)阶段卡住,从而导致BMC在等待系统复位信号时超时。

总结:这里的“硬件电路故障”并非特指某个单一元器件,而是泛指所有可能导致系统在指定时间(如10秒)内无法完成上电、发出 sys_pwrgood 信号的物理电路或硬件组件问题。它与“CPLD版本不配套”等问题一起,被列为需要硬件工程师介入排查的方向。

问题二:“防误触功能”是什么?

根据上下文信息,防误触功能 是一个用于防止误操作的功能。具体来说:

  • 定义防误触功能 是指防止电源按钮被意外或误触发的机制。在您提供的 CSR配置字典之ButtonEvt类 文档中,它被明确提及为一个可配置的功能。
  • 工作机制
    • 在系统层面,存在 SetButtonShieldStateGetButtonShieldState 等接口来设置获取电源按钮防误触功能的使能状态。
    • 防误触功能 的生效是通过关联硬件代理(Accessor)来控制电源按钮的逻辑功能。当该功能启用时,电源按钮产生的信号可能被屏蔽或忽略,从而防止因误触按钮而导致的意外上电或下电。
  • 特殊场景(代码注释逻辑)
    您提供的代码片段中提到:“沿用V2处理方式,防误触功能开启后也可以上电”。
    这段逻辑出现在 上电超时处理 的代码中。其场景是:当系统上电失败(首次短按超时)后,代码会执行一个长按信号push_button_long)来尝试强制上电。而代码注释特意说明,在防误触功能开启的情况下,这种处理逻辑依然生效,即防误触功能不会阻止这个恢复性的长按上电操作。

总结防误触功能 是一个软件控制的硬件屏蔽功能,类似于手机的防误触模式。它可以防止电源按钮的意外操作,但在某些特定的恢复流程(如超时后长按强制上电)中,该功能被设计为允许这些操作执行,以确保系统有恢复的可能。