blob: c3f77fd8b1cf30ad444b6422f88524cefe712206 [file] [log] [blame]
#!/bin/bash
# shellcheck disable=SC2046
# shellcheck source=/dev/null
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