Initial commit
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
[Unit]
|
||||
Description=Ampere System Firmware Hang Handler
|
||||
After=obmc-host-already-on@0.target
|
||||
BindTo=obmc-host-already-on@0.target
|
||||
ConditionPathExists=!/var/ampere/sysfw-hang-disable
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/sbin/ampere_sysfw_hang_handler.sh
|
||||
SyslogIdentifier=ampere_sysfw_hang
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
# shellcheck source=meta-ampere/meta-mitchell/recipes-ampere/platform/ampere-platform-init/gpio-lib.sh
|
||||
source /usr/sbin/gpio-lib.sh
|
||||
|
||||
# Do event trigger
|
||||
function sel_trigger()
|
||||
{
|
||||
echo "Error: system firmware hang, trigger sel"
|
||||
ampere_add_redfishevent.sh OpenBMC.0.1.SystemPowerOnFailed.Critical
|
||||
}
|
||||
|
||||
# Do reset the system
|
||||
function reset_system()
|
||||
{
|
||||
echo "Error: system firmware hang, reset the system"
|
||||
ipmitool chassis power reset
|
||||
}
|
||||
|
||||
s0_last_hb_state=0
|
||||
cnt=-1
|
||||
while true
|
||||
do
|
||||
# Monitor heart beat GPIO value, GPIOF4 for Socket 0
|
||||
s0_hb_state=$(gpio_name_get s0-heartbeat)
|
||||
if [ "$s0_last_hb_state" != "$s0_hb_state" ]; then
|
||||
cnt=0
|
||||
else
|
||||
cnt=$((cnt + 1))
|
||||
fi
|
||||
|
||||
if [ "$cnt" -ge 6 ]; then
|
||||
echo "Error: system firmware hang"
|
||||
sel_trigger
|
||||
reset_system
|
||||
exit 0
|
||||
fi
|
||||
s0_last_hb_state="$s0_hb_state"
|
||||
sleep 0.5
|
||||
done
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user