.../selftests/cpu-hotplug/cpu-on-off-test.sh | 74 ++++++++++--------- 1 file changed, 40 insertions(+), 34 deletions(-)
The script uses by default the bash shell that is inaccessible in
the x86 embedded devices. This leads to the syntax errors. To mitigate
this, change the interpreter to /bin/sh and rework the prints from echo
to printf to make it more robust and posix compliant. Change the
conditional check for being a root from not existent UID and replace
with command execution "id -u".
Signed-off-by: Hubert Mazur <hmazur@google.com>
---
Changes in v2:
- Fix issues reported with sashiko.dev
- https://sashiko.dev/#/patchset/20260318080825.3063959-2-hmazur%40google.com
- Make sure the script is compliant with strict posix shells
- Test the script syntax on busybox
Link to v1:
- https://lore.kernel.org/all/20260318080825.3063959-2-hmazur@google.com/
.../selftests/cpu-hotplug/cpu-on-off-test.sh | 74 ++++++++++---------
1 file changed, 40 insertions(+), 34 deletions(-)
diff --git a/tools/testing/selftests/cpu-hotplug/cpu-on-off-test.sh b/tools/testing/selftests/cpu-hotplug/cpu-on-off-test.sh
index 6232a46ca6e1..a91c8e47fe46 100755
--- a/tools/testing/selftests/cpu-hotplug/cpu-on-off-test.sh
+++ b/tools/testing/selftests/cpu-hotplug/cpu-on-off-test.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
SYSFS=
@@ -10,8 +10,8 @@ prerequisite()
{
msg="skip all tests:"
- if [ $UID != 0 ]; then
- echo $msg must be run as root >&2
+ if [ $(id -u) -ne 0 ]; then
+ printf "%s must be run as root\n" "$msg" >&2
exit $ksft_skip
fi
@@ -20,37 +20,37 @@ prerequisite()
SYSFS=`mount -t sysfs | head -1 | awk '{ print $3 }'`
if [ ! -d "$SYSFS" ]; then
- echo $msg sysfs is not mounted >&2
+ printf "%s sysfs is not mounted\n" "$msg" >&2
exit $ksft_skip
fi
if ! ls $SYSFS/devices/system/cpu/cpu* > /dev/null 2>&1; then
- echo $msg cpu hotplug is not supported >&2
+ printf "%s cpu hotplug is not supported\n" "$msg" >&2
exit $ksft_skip
fi
- echo "CPU online/offline summary:"
+ printf "CPU online/offline summary:\n"
online_cpus=`cat $SYSFS/devices/system/cpu/online`
online_max=${online_cpus##*-}
- if [[ "$online_cpus" = "$online_max" ]]; then
- echo "$msg: since there is only one cpu: $online_cpus"
+ if [ "$online_cpus" = "$online_max" ]; then
+ printf "%s since there is only one cpu: %s\n" "$msg" "$online_cpus"
exit $ksft_skip
fi
present_cpus=`cat $SYSFS/devices/system/cpu/present`
present_max=${present_cpus##*-}
- echo "present_cpus = $present_cpus present_max = $present_max"
+ printf "present_cpus = %s, present_max = %s\n" "$present_cpus" "$present_max"
- echo -e "\t Cpus in online state: $online_cpus"
+ printf "\t Cpus in online state: %s\n" "$online_cpus"
offline_cpus=`cat $SYSFS/devices/system/cpu/offline`
- if [[ "a$offline_cpus" = "a" ]]; then
+ if [ "a$offline_cpus" = "a" ]; then
offline_cpus=0
else
offline_max=${offline_cpus##*-}
fi
- echo -e "\t Cpus in offline state: $offline_cpus"
+ printf "\t Cpus in offline state: %s\n" "$offline_cpus"
}
#
@@ -62,7 +62,7 @@ hotpluggable_cpus()
for cpu in $SYSFS/devices/system/cpu/cpu*; do
if [ -f $cpu/online ] && grep -q $state $cpu/online; then
- echo ${cpu##/*/cpu}
+ printf "%s\n" "${cpu##/*/cpu}"
fi
done
}
@@ -99,39 +99,44 @@ offline_cpu()
online_cpu_expect_success()
{
+ FUNC="online_cpu_expect_success()"
local cpu=$1
if ! online_cpu $cpu; then
- echo $FUNCNAME $cpu: unexpected fail >&2
+ printf "%s %s: unexpected fail\n" "$FUNC" "$cpu" >&2
retval=1
elif ! cpu_is_online $cpu; then
- echo $FUNCNAME $cpu: unexpected offline >&2
+ printf "%s %s: unexpected offline\n" "$FUNC" "$cpu" >&2
retval=1
fi
}
online_cpu_expect_fail()
{
+
+ FUNC="online_cpu_expect_fail()"
local cpu=$1
if online_cpu $cpu 2> /dev/null; then
- echo $FUNCNAME $cpu: unexpected success >&2
+ printf "%s %s: unexpected success\n" "$FUNC" "$cpu" >&2
retval=1
elif ! cpu_is_offline $cpu; then
- echo $FUNCNAME $cpu: unexpected online >&2
+ printf "%s %s: unexpected online\n" "$FUNC" "$cpu" >&2
retval=1
fi
}
offline_cpu_expect_success()
{
+
+ FUNC="offline_cpu_expect_success()"
local cpu=$1
if ! offline_cpu $cpu; then
- echo $FUNCNAME $cpu: unexpected fail >&2
+ printf "%s %s: unexpected fail\n" "$FUNC" "$cpu" >&2
retval=1
elif ! cpu_is_offline $cpu; then
- echo $FUNCNAME $cpu: unexpected offline >&2
+ printf "%s %s: unexpected offline\n" "$FUNC" "$cpu" >&2
retval=1
fi
}
@@ -139,12 +144,13 @@ offline_cpu_expect_success()
offline_cpu_expect_fail()
{
local cpu=$1
+ FUNC="offline_cpu_expect_fail()"
if offline_cpu $cpu 2> /dev/null; then
- echo $FUNCNAME $cpu: unexpected success >&2
+ printf "%s %s: unexpected success\n" "$FUNC" "$cpu" >&2
retval=1
elif ! cpu_is_online $cpu; then
- echo $FUNCNAME $cpu: unexpected offline >&2
+ printf "%s %s: unexpected offline\n" "$FUNC" "$cpu" >&2
retval=1
fi
}
@@ -182,9 +188,9 @@ while getopts ah opt; do
allcpus=1
;;
h)
- echo "Usage $0 [ -a ]"
- echo -e "\t default offline one cpu"
- echo -e "\t run with -a option to offline all cpus"
+ printf "Usage %s [ -a ]\n" "$0"
+ printf "\t default offline one cpu\n"
+ printf "\t run with -a option to offline all cpus\n"
exit
;;
esac
@@ -195,25 +201,25 @@ prerequisite
#
# Safe test (default) - offline and online one cpu
#
-if [ $allcpus -eq 0 ]; then
- echo "Limited scope test: one hotplug cpu"
- echo -e "\t (leaves cpu in the original state):"
- echo -e "\t online to offline to online: cpu $online_max"
+if [ "$allcpus" -eq 0 ]; then
+ printf "Limited scope test: one hotplug cpu\n"
+ printf "\t (leaves cpu in the original state):\n"
+ printf "\t online to offline to online: cpu %s\n" "$online_max"
offline_cpu_expect_success $online_max
online_cpu_expect_success $online_max
- if [[ $offline_cpus -gt 0 ]]; then
- echo -e "\t online to offline to online: cpu $present_max"
+ if [ "$offline_cpus" -gt 0 ]; then
+ printf "\t online to offline to online: cpu %s\n" "$present_max"
online_cpu_expect_success $present_max
offline_cpu_expect_success $present_max
online_cpu $present_max
fi
exit $retval
else
- echo "Full scope test: all hotplug cpus"
- echo -e "\t online all offline cpus"
- echo -e "\t offline all online cpus"
- echo -e "\t online all offline cpus"
+ printf "Full scope test: all hotplug cpus\n"
+ printf "\t online all offline cpus\n"
+ printf "\t offline all online cpus\n"
+ printf "\t online all offline cpus\n"
fi
online_all_hot_pluggable_cpus
--
2.53.0.1018.g2bb0e51243-goog
© 2016 - 2026 Red Hat, Inc.