Hieu Huynh | 57fa792 | 2022-07-12 10:18:25 +0000 | [diff] [blame^] | 1 | #!/bin/bash |
| 2 | |
| 3 | # shellcheck disable=SC2046 |
| 4 | # shellcheck source=/dev/null |
| 5 | |
| 6 | source /usr/sbin/gpio-lib.sh |
| 7 | |
| 8 | # Do event trigger |
| 9 | function sel_trigger() |
| 10 | { |
| 11 | echo "Error: system firmware hang, trigger sel" |
| 12 | ampere_add_redfishevent.sh OpenBMC.0.1.SystemPowerOnFailed.Critical |
| 13 | } |
| 14 | |
| 15 | # Do reset the system |
| 16 | function reset_system() |
| 17 | { |
| 18 | echo "Error: system firmware hang, reset the system" |
| 19 | ipmitool chassis power reset |
| 20 | } |
| 21 | |
| 22 | s0_last_hb_state=0 |
| 23 | cnt=-1 |
| 24 | while true |
| 25 | do |
| 26 | # Monitor heart beat GPIO value, GPIOF4 for Socket 0 |
| 27 | s0_hb_state=$(gpio_name_get s0-heartbeat) |
| 28 | if [ "$s0_last_hb_state" != "$s0_hb_state" ]; then |
| 29 | cnt=0 |
| 30 | else |
| 31 | cnt=$((cnt + 1)) |
| 32 | fi |
| 33 | |
| 34 | if [ "$cnt" -ge 6 ]; then |
| 35 | echo "Error: system firmware hang" |
| 36 | sel_trigger |
| 37 | reset_system |
| 38 | exit 0 |
| 39 | fi |
| 40 | s0_last_hb_state="$s0_hb_state" |
| 41 | sleep 0.5 |
| 42 | done |
| 43 | |
| 44 | exit 0 |