上下电常见问题指南
已经上电但是OS没有起来
执行 ipmcget -d powerstate,如果是M4状态,说明已经上电,联系相关负责人查看BIOS启动是否正常。
没上电首先确定对象是否分发完成
在app.log中查找关键字:fructrl objects distribution completed. uptime:
如果没有下面的打印,直接联系框架负责人。
没上电其次确认上电超时锁是否锁住
执行 ipmcget -t maint -d poweronlock,执行后若发现是上锁状态,操作如下命令:
- 解锁:
ipmcset -t maintenance -d poweronlock -v clear - 解锁后再次尝试上电,若仍无法上电,尝试执行ACCYCLE恢复:
ipmcset -t maint -d accycle
若执行后还不能恢复,说明逻辑或硬件有问题,联系该机型的CPLD负责人。
若硬件需要查看具体事件或寄存器的值,提供以下命令:
5.3版本: 最后一个期望值是8,前几个期望值是0
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x0C000D00 1
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_ExpBoardSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x1c001500 1
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x0C001100 1
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_ExpBoardSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x1C001900 1
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x0C000900 1
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_ExpBoardSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x1c001100 15.5版本: 南向设备树反合后换了path,期望值和前面5.3一致
busctl --user call bmc.kepler.hwproxy /bmc/dev/Systems/1/CpuBoard/CpuBoard_1_Dev_010101/Smc/Smc_CpuBrdSMC_Dev_010101 bmc.dev.Chip.BlockIO Read a{ss}uu 0 0x0C000900 1
busctl --user call bmc.kepler.hwproxy /bmc/dev/Systems/1/ExpBoard/ExpBoard_1_Dev_0101/Smc/Smc_ExpBoardSMC_Dev_0101 bmc.dev.Chip.BlockIO Read a{ss}uu 0 0x1c001500 1查看web界面上是否有上电超时或下电超时的告警
有告警,说明硬件有问题,联系相关负责人。
上下电常见问题自助定位方法
上电相关问题
发了上电命令,但是没有上电成功
日志中搜索
Notify cpld to send short button signal through hwproxy Accessor.,这个打印代表已经向硬件送了短按中断。如果还未上电,请联系硬件定位。请用该命令查询
ipmcget -t main -d poweronlock,是否发生上电超时事件。如果回显为locked,则说明发生上电超时事件。
解决方案:
如果只想恢复环境,可直接使用该命令清除
ipmcset -t maintenance -d poweronlock -v clear。如清除后依然无法上电,尝试执行accycle,若依然无法恢复,请联系硬件定位。需要定位根因,请联系硬件
请确定是否存在上电锁。关键词
Update item successfully, appname,可以判断是哪个组件发送的上电锁。请检查固件版本是否配套,特别是CPLD版本。或将固件更新至最新版本
下电相关问题
发了下电命令,但是没有下电成功
下电可以通过短按信号普通下电,也可以通过长按信号强制下电。在日志中可搜索
Notify cpld to send short button signal through hwproxy Accessor.,或Notify cpld to send long button signal through hwproxy Accessor.。如果未下电,同样请联系硬件定位。下电同样也会出现失败的情况:
如果配置了安全下电超时时间,则系统在配置时间内未下电会执行强制下电。
如果未配置,默认下电超时时间为10min,超时则重新上电。
下电失败日志关键字:Power off timeout
PowerCycle相关问题
发了PowerCycle命令,但是没有执行
请排查执行PowerCycle命令后,是否执行了其他的上下电操作,其他操作会打断PowerCycle命令的执行。
PowerCycle是将设备先下电再上电,其本质还是会出现上述下电失败或上电失败的情况。
下电状态下无法执行PowerCycle
OS上下电命令来源问题
凡是经过BMC的上下电命令,必定会经过powerapi或者execute这两个文件,所以其他情况都是不经过BMC的上下电。
凡是不经过BMC的上下电命令,不归BMC负责。
上下电历史典型问题整理
问题一:AC后日志文件丢失
根因: syslog记录日志是先缓存,AC执行时还未落盘导致日志文件丢失。
解决方式: AC命令接口动作执行前先写入磁盘并刷cache,保证日志落盘后再AC。
问题二:异常掉电,未做任何操作就掉电
根因:
检查板子是否是早期板子
CPU是否存在5小时bug,检查方法如下:
判断是否5h BUG CPU(OS读CPU寄存器):
./devmem 0x40107e210bit 139:137
- 001 -> 正常CPU
- 000 -> 5hBUG
解决方式: 换板子。
上下电设计规则
规则1:CPLD无法处理短按、长按信号同时到达的场景,需要BMC侧做屏蔽,两种信号需要间隔2s及以上。
规则2:上电超时,表示硬件电路有问题
上电超时,表示硬件电路有问题,额外的强制下电并不能解决问题,BMC侧仅记录日志即可。
这种场景需要修复电路后,通过清除CPLD的超时标记或者AC才能恢复。
规则3:PowerCycle、ForcePowerCycle等电源循环的优先级最低,任何的上下电动作都应打断cycle类动作。
规则4:PowerCycle、ForcePowerCycle需要在上电状态下才能执行。
规则5:ACCycle(AC)优先级最高,任何状态下都可以执行。
规则6:busctl的返回值不表示指令是否下达成功,而是表示是否将要执行。
需要BMC侧在收到busctl指令后,先判断条件,不具备执行条件时直接返回失败。
规则7:按钮事件是电平检测,会检测电平的持续时间,以长按为例,检测到约6s时就上报事件。
规则8:按钮不松开,BMC无法清除按钮事件。
规则9:只有上电和安全下电走状态机(主动改变状态机状态)。其他操作检测到电源状态变化后,状态机被动改变。
规则10:设置上电锁会屏蔽面板电源按钮,用于防止按钮上电。额外导致按钮长按下电也失效。
规则11:面板按钮屏蔽后,按钮事件正常上报,屏蔽的是上下电动作。
规则12:按钮上下电是由CPLD执行的,BMC仅接收事件上报,记录日志。
(后期可能改成行为可配置,三大洋单板按钮走软件流程)
规则13:强制重启OS和cycle操作需要在上电状态执行。
规则14:新版的扩展板要判断风扇板的PG信号是否传递过来,传过来才上电。(要升级同一产品版本的CPLD)
规则15:设计原则——谁下的电谁负责上,尽量不要让上下电模块过多的去判断上层结果。
规则16:通电开机策略上电前会等所有的上电锁解锁。
规则17:出于安全的考虑,上电前需要做BIOS自检,在确保flash不被篡改的前提下,才可以上电。
规则18:上电前需要广播信号(V3特有),用于BIOS捕获后做自检。仅由下电变上电的场景才需要广播,上电状态发上电时,不广播信号。
规则19:发短button给业务系统上电时,持续10s检测ACPI状态,如果上电失败就重试3次。
服务器一直是这样的策略,应用场景:比如有个电源短路故障了,单板一直没有发出sys_pwrgood寄存器给BMC,就是上电失败了,重试过程中,故障解除,又可以上电了。
CPLD是检测寄存器变化给南桥发脉冲,不重复写就没有脉冲。
规则20:冷复位与热复位
- chassis control(netfn=0x00, cmd=0x02):冷复位是PowerCycle,热复位是重启OS
- fru control(netfn=0x2c, cmd=0x04):冷复位是重启OS,热复位不支持。此外,子命令为02时的平滑复位是ForcePowerCycle
规则21:软复位不走通电开机策略。
V3软复位还是硬复位的判断,由一个保存到复位持久化数据库的变量判断。
规则22:AC起来后,CPLD会默认屏蔽按钮功能,防止误触发。
规则23:上电前需要清除电源告警锁存寄存器(PowerFail Event)。
该寄存器不清仅影响告警的消除和下次告警,不影响上电,为了方案简单,讨论后决定在上电前清除锁存。
有两个概念,真实的告警故障和锁存的告警事件,前者在上电后因CPLD不再上报消失,后者在BMC清除后就消失。
规则24:当发生上电超时或异常掉电问题时,CPLD会锁存相关寄存器(vcc_time_out和vcc_power_fail),并在上电时由CPLD清除。
规则25:上下电超时后,10min后状态机才发生变化
- 上电超时后,热插拔状态需要回到M1,电源状态为下电
- 下电超时后,热插拔状态需要回到M4,电源状态为上电
默认等待时间为10min。
规则26:复位原因,涉及到事件上报,所以需要收到控制命令后记录关键信息,等收到平台复位信号后使用对应原因。
规则27:LED测试的时候会写CPLD寄存器,开启装备模式,此时CPLD会上报按钮事件。
规则28:强制下电,是先下电,再触发M4->M6,状态跳变原因是掉电。安全下电,是先M4->M6,再下电。
规则29:公有云诉求,新增Redfish接口修改 PowerOnStrategyExceptions,属性为1时禁用通电开机策略。
(本质是解决下电接口耦合CPLD生效的中间措施)
人为AC起来后不清除标记,只有相关场景触发的AC才清除标记。
规则30:V3设计原则——越复杂的逻辑(综合多个条件)应该越在上层处理。
fructrl承载环境变了生效特性的原因:需要综合业务系统电源信息,并且在初始化阶段完成,在上下电时序控制维度可靠性比较高。
规则31:检测到高温,延时等待五分钟后上电,若5分钟后还是高温仍会再次下电。
高温下电动作由CPLD设置,清除动作由BMC在等待五分钟后执行。五分钟时长不可设置修改(配置在CSR里,不同单板可能有差异)。
规则32:V3新增软件侧的上电锁概念,提供给BIOS等需下电生效的固件一个接口来保证生效后再上电,指的是软件侧控制一个上电锁导致无法上电,资源树上属性名为PwrOnLocked
注意:上述上电锁与CLI命令ipmcget -t maintenance -d poweronlock中的锁不是一个概念。CLI命令的上电锁指的是默认状态下,若服务器在指定时间内未完成上电,则通过iBMC为服务器上电的功能被锁定,服务器将无法通过iBMC上电。即硬件侧上电超时导致的无法上电。
规则33:HPC的通电开机策略实现错峰的机制
打出"......."后 +(槽位号-1)*1分钟 再进行写寄存器。
规则34:复位信号的作用
复位信号和ipmi_core/BIOS/RAS的功能有关系,复位信号上报后,会记录一条normal级别的事件,不允许随意配置。