环境:
docker:2509
general_hardware:25.09_2025.09.30
步骤:web界面在线升级CPLD,提示升级成功,但是升级完成后,OS上电失败,下面是相关附带的日志
~ # tail -f /var/log/app.log|grep "general_hardware"
1970-01-01 08:25:33.756887 general_hardware NOTICE: upgrade_subject.lua(82): [on_upgrade_prepare] firmware_type:Cpld cur_firmware_type:Cpld
1970-01-01 08:25:33.757688 general_hardware NOTICE: upgrade_subject.lua(90): [on_upgrade_prepare] start upgrade Cpld
1970-01-01 08:25:33.758524 general_hardware NOTICE: signal.lua(116): [cpld]Start the system[1] Cpld upgrade prepare phase
1970-01-01 08:25:33.884802 general_hardware NOTICE: upgrade_subject.lua(97): [on_upgrade_prepare] end upgrade Cpld
1970-01-01 08:25:33.889271 general_hardware NOTICE: fw_upgrade.lua(136): [cpld]get cpld_valid :nil
1970-01-01 08:25:33.892345 general_hardware NOTICE: fw_cfgs.lua(69): check fw uid(00000055020151250001) id(255) id_ex(4294967295) exist success
1970-01-01 08:25:34.093297 general_hardware NOTICE: fw_init.lua(194): get fw version 1.01
1970-01-01 08:25:34.093770 general_hardware NOTICE: fw_upgrade.lua(94): [cpld]get verion[1.01]
1970-01-01 08:25:35.450674 general_hardware NOTICE: upgrade_subject.lua(109): [on_upgrade_process] start upgrade Cpld
1970-01-01 08:25:35.451653 general_hardware NOTICE: signal.lua(139): [cpld]Start the system[1] Cpld upgrade process phase
1970-01-01 08:25:35.560633 general_hardware NOTICE: upgrade_subject.lua(116): [on_upgrade_process] end upgrade Cpld
1970-01-01 08:25:35.561358 general_hardware NOTICE: fw_cfgs.lua(69): check fw uid(00000055020151250001) id(255) id_ex(4294967295) exist success
1970-01-01 08:25:35.561837 general_hardware NOTICE: process.lua(43): cpld fw matched, system_id = 1, fw.uid = 00000055020151250001, fw.csr.Name = EXU_CPLD
1970-01-01 08:25:35.608832 general_hardware NOTICE: process.lua(463): [cpld]get cpld packages successful
1970-01-01 08:25:35.610358 general_hardware NOTICE: process.lua(198): [cpld]_____load_cpld_single_____
1970-01-01 08:25:35.613476 general_hardware NOTICE: process.lua(61): load file[0x2d216]
1970-01-01 08:25:39.927872 general_hardware ERROR: remote_rp.lua(198): Get object CpuBoard_1_010101's reference property BmcStartFlag failed, err: BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:196: ./opt/bmc/libmc/lualib/mc/signal.lua:310: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:117: chip: Smc_ExpBoardSMC_0101, bus: I2c_2, read failed: i2c.lua:117: response error, i2c write fail, ret: 5, input:{"rw_type":0,"smc_target":1,"buffer":"04 1C 00 05 00 9E ","offsetWidth":1,"addrWidth":1,"addr":96,"mask":4294967295,"requestor":"Accessor_BmcStartFlag_010101","drv_write_delay":0,"type":1,"len":6,"is_trace":false,"has_error":false,"name":"Smc_ExpBoardSMC_0101","offset":32}
1970-01-01 08:26:00.402547 general_hardware ERROR: remote_rp.lua(198): Get object CpuBoard_1_010101's reference property BmcStartFlag failed, err: BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:196: ./opt/bmc/libmc/lualib/mc/signal.lua:310: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:117: chip: Smc_ExpBoardSMC_0101, bus: I2c_2, read failed: i2c.lua:117: response error, i2c write fail, ret: 5, input:{"rw_type":0,"smc_target":1,"buffer":"04 1C 00 05 00 9E ","requestor":"Accessor_BmcStartFlag_010101","addrWidth":1,"mask":4294967295,"offsetWidth":1,"addr":96,"drv_write_delay":0,"type":1,"len":6,"is_trace":false,"has_error":false,"name":"Smc_ExpBoardSMC_0101","offset":32}
1970-01-01 08:26:09.840127 general_hardware WARNING: init.lua(701): service[bmc.kepler.firmware_mgmt] request timeout: remote service[bmc.kepler.hwproxy], path[/bmc/kepler/Chip/Cpld/Cpld_1_0101], interface[bmc.kepler.Chip.BlockIO], method[Write], used time[34s]
1970-01-01 08:26:09.840784 general_hardware NOTICE: process.lua(87): [cpld]/dev/shm/upgrade/1817169424/cpld.vme update success!
1970-01-01 08:26:09.863700 general_hardware NOTICE: valid.lua(227): [cpld]set system_id = 1 ValidatingCpldFlag = 1
1970-01-01 08:26:09.890591 general_hardware ERROR: hook.lua(79): database process commit list failed: ./opt/bmc/libmc/lualib/mc/context.lua:196: ./opt/bmc/libmc/lualib/mc/signal.lua:310: ./opt/bmc/libmc/lualib/mc/orm/object.lua:560: attempt to call field 'create_mdb_object' (a nil value)
1970-01-01 08:26:11.123520 general_hardware NOTICE: upgrade_subject.lua(128): [on_upgrade_finish] start upgrade Cpld
1970-01-01 08:26:11.127395 general_hardware NOTICE: signal.lua(265): [cpld]Start the system[1] Cpld upgrade finish phase
1970-01-01 08:26:11.247513 general_hardware NOTICE: fructl_handler.lua(57): get_host_type: get host type Singlehost
1970-01-01 08:26:11.255655 general_hardware NOTICE: fructl_handler.lua(76): get_power_state: system[1] get power power OFF
1970-01-01 08:26:11.257044 general_hardware NOTICE: signal.lua(182): upgrade_single_host system_id[1] firmware_type[Cpld] power_state[OFF]
1970-01-01 08:26:11.258165 general_hardware NOTICE: valid.lua(222): [cpld]get system_id = 1 ValidatingCpldFlag = true
1970-01-01 08:26:11.258641 general_hardware NOTICE: upgrade_subject.lua(135): [on_upgrade_finish] end upgrade Cpld
1970-01-01 08:26:11.259062 general_hardware NOTICE: fw_upgrade.lua(216): [cpld] finish upgrade system_id[1] firmware_type[Cpld]
1970-01-01 08:26:11.259298 general_hardware NOTICE: fw_upgrade.lua(223): [cpld] set valid true
1970-01-01 08:26:11.260306 general_hardware NOTICE: valid.lua(222): [cpld]get system_id = 1 ValidatingCpldFlag = true
1970-01-01 08:26:11.266648 fructrl NOTICE: fructrl_obj_mgnt.lua(264): [System:1]set poweron lock, pwronlocked=true, timeout=300, appname=general_hardware, reason=cpld
1970-01-01 08:26:11.267318 fructrl NOTICE: pwr_on_lock.lua(48): [System:nil][general_hardware] add item to lock_table successfully.
1970-01-01 08:26:11.734003 general_hardware NOTICE: cpu_board.lua(53): [BCU]set BMC startup completed flag to CPLD successfully
1970-01-01 08:26:11.975939 general_hardware NOTICE: valid.lua(128): [cpld]found /data/opt/bmc/up_cfg/valid_00000055020151250001_1_1.vme, uid[00000055020151250001], chip_index[1], sysid[1]
1970-01-01 08:26:12.513279 general_hardware NOTICE: valid.lua(65): [cpld]valid file[0x4b550]:/data/opt/bmc/up_cfg/valid_00000055020151250001_1_1.vme
1970-01-01 08:26:22.744870 general_hardware NOTICE: valid.lua(91): [cpld]/data/opt/bmc/up_cfg/valid_00000055020151250001_1_1.vme update success!!!!
1970-01-01 08:26:25.770590 general_hardware NOTICE: valid.lua(227): [cpld]set system_id = 1 ValidatingCpldFlag = 0
1970-01-01 08:26:25.792846 general_hardware NOTICE: fructl_handler.lua(165): set power restore successfully, reason: ActiveCpld, execute: Yes, period: Once, priority: 2
1970-01-01 08:26:25.793189 general_hardware NOTICE: fw_upgrade.lua(226): [cpld] set valid false
1970-01-01 08:26:25.794203 general_hardware NOTICE: signal.lua(171): [cpld] Register active action of reset AC
1970-01-01 08:26:25.802359 general_hardware NOTICE: fructl_handler.lua(57): get_host_type: get host type Singlehost
1970-01-01 08:26:25.805058 general_hardware NOTICE: fw_cfgs.lua(69): check fw uid(00000055020151250001) id(255) id_ex(4294967295) exist success
1970-01-01 08:26:25.805592 general_hardware NOTICE: signal.lua(50): [CPLD]Register Active Action start firmware_id = CPLD_ResetAC active_condition = PowerOff active_mode = ResetAC
1970-01-01 08:26:32.529592 general_hardware ERROR: remote_rp.lua(198): Get object CpuBoard_1_010101's reference property BmcStartFlag failed, err: BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:196: ./opt/bmc/libmc/lualib/mc/signal.lua:310: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:117: chip: Smc_ExpBoardSMC_0101, bus: I2c_2, read failed: i2c.lua:117: response error, i2c write fail, ret: 62, input:{"rw_type":0,"smc_target":1,"buffer":"04 1C 00 05 00 9E ","offsetWidth":1,"addrWidth":1,"addr":96,"mask":4294967295,"requestor":"Accessor_BmcStartFlag_010101","drv_write_delay":0,"type":1,"len":6,"is_trace":false,"has_error":false,"name":"Smc_ExpBoardSMC_0101","offset":32}
1970-01-01 08:26:32.533806 general_hardware ERROR: remote_rp.lua(198): Get object ExpBoard_1_0101's reference property CpldTestReg failed, err: BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:196: ./opt/bmc/libmc/lualib/mc/signal.lua:310: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:117: chip: Smc_ExpBoardSMC_0101, bus: I2c_2, read failed: i2c.lua:117: response error, i2c write fail, ret: 62, input:{"rw_type":0,"smc_target":1,"buffer":"04 00 00 21 00 EB ","offsetWidth":1,"addrWidth":1,"addr":96,"mask":4294967295,"requestor":"Accessor_CpldTest_0101","drv_write_delay":0,"type":1,"len":6,"is_trace":false,"has_error":false,"name":"Smc_ExpBoardSMC_0101","offset":32}
sr中相关配置
配置上也参考该帖子https://discuss.openubmc.cn/t/topic/1285/3中我们拓扑也是扩展板上CPLD与BMC直连

分析定位
文档中有说明ValidMode属性已经废弃,但是通过走读代码
general_hardware仓库中依旧对该属性有描述,同时会基于该配置去执行升级完后的逻辑
同时发现单厂商,是不支持热升级?通过代码可以发现,此处跳过检查后,无设置热升级,导致全部单厂家都是冷升级?
问题
1.单厂商是否指代的是单个CPLD包,多厂商是指多个CPLD包?
2.冷升级是指需要AC,CPLD才能生效,热升级是指OS重启,CPLD就能生效吗?
3.上面的CPLD升级配置中是否存在问题呢?目前的现象是,CPLD升级,web提示成功,但是需要AC才能生效,否则OS上电也会存在异常,这是正常现象吗?
4.根据代码来看,单厂商支持热升级是否与CPLD 升级流程介绍说明 该帖子中表达的不一样,还是我理解有误呢?
5.根据代码中判断是否是冷热升级的信息来源于ColdValidList和HotValidList,这两个是否是根据打包CPLD在线升级包的时候附带进去的呢?不由BMC进行配置?
希望有大佬能解答一下上面的疑问?十分感谢







