[Celestica-E1031] Enable CPU watchdog (#16083)

Enable CPU watchdog on Celestica-E1031.
This commit is contained in:
Zhijian Li 2023-08-14 12:33:19 +08:00 committed by GitHub
parent 34bad34495
commit ab7c4ee661
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 105 additions and 1 deletions

View File

@ -1,5 +1,6 @@
haliburton/cfg/haliburton-modules.conf etc/modules-load.d
haliburton/systemd/platform-modules-haliburton.service lib/systemd/system
haliburton/systemd/cpu_wdt.service lib/systemd/system
haliburton/script/fancontrol.sh etc/init.d
haliburton/script/fancontrol.service lib/systemd/system
services/fancontrol/fancontrol usr/local/bin
@ -8,4 +9,5 @@ services/platform_api/platform_api_mgnt.sh usr/local/bin
haliburton/script/popmsg.sh usr/local/bin
haliburton/script/udev_prefix.sh usr/local/bin
haliburton/script/reload_udev.sh usr/local/bin
haliburton/script/cpu_wdt usr/local/bin
haliburton/script/50-ttyUSB-C0.rules etc/udev/rules.d

View File

@ -3,6 +3,7 @@ depmod -a
sudo chmod +x /usr/local/bin/udev_prefix.sh
sudo chmod +x /usr/local/bin/popmsg.sh
sudo chmod +x /usr/local/bin/reload_udev.sh
sudo chmod +x /usr/local/bin/cpu_wdt
/usr/local/bin/platform_api_mgnt.sh install
/etc/init.d/fancontrol.sh install
@ -10,6 +11,8 @@ sudo chmod +x /usr/local/bin/reload_udev.sh
systemctl enable platform-modules-haliburton.service
systemctl enable fancontrol.service
systemctl enable cpu_wdt.service
systemctl start platform-modules-haliburton.service
systemctl start fancontrol.service
systemctl start fancontrol.service
systemctl start cpu_wdt.service

View File

@ -0,0 +1,89 @@
#!/bin/bash
SYSLOG_IDENTIFIER="cpu_wdt"
CPUWDT_MAIN_TASK_RUNNING_FLAG=true
TIMEOUT=180
KEEPALIVE=60
function log_info()
{
logger -p info -t ${SYSLOG_IDENTIFIER} "$@"
}
function usage()
{
echo "Usage: $0 ACTION [OPTIONS]..."
echo ""
echo "Actions:"
echo " start Start CPU WDT"
echo " stop Stop CPU WDT"
echo ""
echo "Options:"
echo " -h Show this help"
echo " -t <timeout> WDT timeout period: {30|60|180}, default 180"
echo " -k <keepalive> WDT keep alive period, {1..(timeout-5)}, default 60"
exit 1
}
function validate_action()
{
if [[ "${ACTION}" != "start" && "${ACTION}" != "stop" ]]; then
echo -e "Invalid action: ${ACTION}\n"
usage
fi
}
function validate_options()
{
if [[ ${TIMEOUT} != "30" && ${TIMEOUT} != "60" && ${TIMEOUT} != "180" ]]; then
echo -e "Invalid timeout value: ${TIMEOUT}\n"
usage
fi
if [[ ${KEEPALIVE} -le 0 || ${KEEPALIVE} -gt $((TIMEOUT - 5)) ]]; then
echo "Invalid keepalive value: ${KEEPALIVE}"
echo ""
usage
fi
}
trap 'log_info "Caught SIGHUP - ignoring..."' SIGHUP
trap 'log_info "Caught SIGINT - exiting..."; CPUWDT_MAIN_TASK_RUNNING_FLAG=false' SIGINT
trap 'log_info "Caught SIGTERM - exiting..."; CPUWDT_MAIN_TASK_RUNNING_FLAG=false' SIGTERM
ACTION=$1
shift
validate_action
while getopts "t:k:" OPTION; do
case $OPTION in
t)
TIMEOUT=${OPTARG}
;;
k)
KEEPALIVE=${OPTARG}
;;
*)
usage
esac
done
validate_options
if [[ "${ACTION}" == "start" ]]; then
# enable
log_info "Enable CPU WDT.."
watchdogutil arm -s "${TIMEOUT}" > /dev/null
log_info "CPU WDT has been enabled with $TIMEOUT seconds timeout"
# keep alive
log_info "Enable keep alive messaging every $KEEPALIVE seconds"
while [[ ${CPUWDT_MAIN_TASK_RUNNING_FLAG} == "true" ]]; do
watchdogutil arm -s "${TIMEOUT}" > /dev/null
sleep "${KEEPALIVE}"
done
log_info "Keep alive messaging has been disabled"
fi
log_info "Disable CPU WDT.."
watchdogutil disarm
log_info "CPU WDT has been disabled!"

View File

@ -0,0 +1,10 @@
[Unit]
Description=CPU WDT
After=platform-modules-haliburton.service
Requires=platform-modules-haliburton.service
[Service]
ExecStart=-/usr/local/bin/cpu_wdt start
[Install]
WantedBy=multi-user.target