summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPotin Lai <potin.lai@quantatw.com>2023-10-27 04:11:38 +0300
committerPL <potin.lai@quantatw.com>2023-11-02 03:21:10 +0300
commit985632efb8139383139644a1d34987f73b88761e (patch)
treebda224a323d97043db3068f31444401d7d882d26
parente7a8a5b8d59c87e8c12688778ba3e685dbccaeb9 (diff)
downloadopenbmc-985632efb8139383139644a1d34987f73b88761e.tar.xz
meta-bletchley: update host state monitoring mechanism
The original checking mechanism only checks whether the current state is different from the previous state. It does not consider the state changes during the state check count, so user will see that the final state is different from the state at the time of the check count. Add a new array for storing temp host state so that we can notice the state changes during checking and reset the check count. Also incerease the check count to 8 to avoid host state changes frequently. Signed-off-by: Potin Lai <potin.lai@quantatw.com> Change-Id: I4713b16becd9787d09f1575fa8df91bbb80e9c5c
-rw-r--r--meta-facebook/meta-bletchley/recipes-bletchley/plat-svc/files/bletchley-host-state-monitor38
1 files changed, 25 insertions, 13 deletions
diff --git a/meta-facebook/meta-bletchley/recipes-bletchley/plat-svc/files/bletchley-host-state-monitor b/meta-facebook/meta-bletchley/recipes-bletchley/plat-svc/files/bletchley-host-state-monitor
index 20a1913f00..ec1fb2994b 100644
--- a/meta-facebook/meta-bletchley/recipes-bletchley/plat-svc/files/bletchley-host-state-monitor
+++ b/meta-facebook/meta-bletchley/recipes-bletchley/plat-svc/files/bletchley-host-state-monitor
@@ -11,8 +11,9 @@ SWITCH_MDIO_BUS="1e650000.mdio-1"
declare -a PORT_NUM_MAP=(10 3 2 1 7 6 5)
declare -a HOST_PREVIOUS_STATE=("" "" "" "" "" "" "")
+declare -a HOST_NEW_STATE_TEMP=("" "" "" "" "" "" "")
declare -a HOST_STATE_CHANGE_CHECK=(0 0 0 0 0 0 0)
-HOST_STATE_CHANGE_CHECH_CNT=5
+HOST_STATE_CHANGE_CHECH_CNT=8
declare -A HOST_ACPI_ST_MAP
HOST_ACPI_ST_MAP["UNKNOW"]="Unknow"
@@ -99,10 +100,10 @@ update_sled_led_state()
local HOST_STATE=$2
case "$HOST_STATE" in
ON|SLEEP)
- systemctl start obmc-led-group-start@sled"$i"_good.service
+ systemctl start obmc-led-group-start@sled"$HOST_ID"_good.service
;;
AC_OFF|OFF)
- systemctl start obmc-led-group-stop@sled"$i"_good.service
+ systemctl start obmc-led-group-stop@sled"$HOST_ID"_good.service
;;
*)
;;
@@ -143,18 +144,29 @@ do
fi
if [ "$HOST_STATE" = "${HOST_PREVIOUS_STATE[$i]}" ]; then
+ if [ "${HOST_STATE_CHANGE_CHECK[$i]}" -lt "$HOST_STATE_CHANGE_CHECH_CNT" ]; then
+ echo "SLED$i: detected state recover (previous:${HOST_PREVIOUS_STATE[$i]}, current:$HOST_STATE)"
+ fi
HOST_STATE_CHANGE_CHECK[i]="$HOST_STATE_CHANGE_CHECH_CNT"
- elif [ "${HOST_STATE_CHANGE_CHECK[$i]}" -gt "0" ]; then
- echo "SLED$i: detected state changed (previous:${HOST_PREVIOUS_STATE[$i]}, current:$HOST_STATE), check count: ${HOST_STATE_CHANGE_CHECK[$i]}"
- HOST_STATE_CHANGE_CHECK[i]=$((HOST_STATE_CHANGE_CHECK[i]-1))
+ HOST_NEW_STATE_TEMP[i]="$HOST_STATE"
else
- echo "SLED$i: detected state changed, update host state to $HOST_STATE"
- update_host_acpi_power_state "$i" "${HOST_ACPI_ST_MAP[$HOST_STATE]}"
- update_host_state "$i" "${HOST_STATE_MAP[$HOST_STATE]}"
- update_chassis_power_state "$i" "${CHASSIS_PWR_STATE_MAP[$HOST_STATE]}"
- update_sled_led_state "$i" "$HOST_STATE"
- HOST_STATE_CHANGE_CHECK[i]="$HOST_STATE_CHANGE_CHECH_CNT"
- HOST_PREVIOUS_STATE[i]="$HOST_STATE"
+ if [ "$HOST_STATE" != "${HOST_NEW_STATE_TEMP[$i]}" ]; then
+ HOST_STATE_CHANGE_CHECK[i]="$HOST_STATE_CHANGE_CHECH_CNT"
+ fi
+
+ if [ "${HOST_STATE_CHANGE_CHECK[$i]}" -gt "0" ]; then
+ echo "SLED$i: detected state changed (previous:${HOST_PREVIOUS_STATE[$i]}, current:$HOST_STATE), check count: ${HOST_STATE_CHANGE_CHECK[$i]}"
+ HOST_STATE_CHANGE_CHECK[i]=$((HOST_STATE_CHANGE_CHECK[i]-1))
+ else
+ echo "SLED$i: detected state changed, update host state to $HOST_STATE"
+ update_host_acpi_power_state "$i" "${HOST_ACPI_ST_MAP[$HOST_STATE]}"
+ update_host_state "$i" "${HOST_STATE_MAP[$HOST_STATE]}"
+ update_chassis_power_state "$i" "${CHASSIS_PWR_STATE_MAP[$HOST_STATE]}"
+ update_sled_led_state "$i" "$HOST_STATE"
+ HOST_STATE_CHANGE_CHECK[i]="$HOST_STATE_CHANGE_CHECH_CNT"
+ HOST_PREVIOUS_STATE[i]="$HOST_STATE"
+ fi
+ HOST_NEW_STATE_TEMP[i]="$HOST_STATE"
fi
done
sleep 1