Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Celestica-E1031] Enable CPU watchdog #16083

Merged
merged 3 commits into from
Aug 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@ 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
/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
Original file line number Diff line number Diff line change
@@ -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!"
Original file line number Diff line number Diff line change
@@ -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