NACK: [PATCH] selftests: cpu-hotplug: fix case where CPUs offline > CPUs present

From: Colin Ian King
Date: Thu Jan 10 2019 - 07:32:27 EST


On 10/01/2019 11:37, Colin King wrote:
> From: Colin Ian King <colin.king@xxxxxxxxxxxxx>
>
> The cpu-hotplug test assumes that we can offline the maximum CPU as
> described by /sys/devices/system/cpu/offline. However, in the case
> where the number of CPUs exceeds like kernel configuration then
> the offline count can be greater than the present count and we end
> up trying to test the offlining of a CPU that is not available to
> offline. Fix this by testing the maximum present CPU instead.
>
> Also, the test currently offlines the CPU and does not online it,
> so fix this by onlining the CPU after the test.
>
> Fixes: d89dffa976bc ("fault-injection: add selftests for cpu and memory hotplug")
> Signed-off-by: Colin Ian King <colin.king@xxxxxxxxxxxxx>
> ---
> .../selftests/cpu-hotplug/cpu-on-off-test.sh | 15 ++++++++++++---
> 1 file changed, 12 insertions(+), 3 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 bab13dd025a6..8670fb38a40e 100755
> --- a/tools/testing/selftests/cpu-hotplug/cpu-on-off-test.sh
> +++ b/tools/testing/selftests/cpu-hotplug/cpu-on-off-test.sh
> @@ -31,12 +31,17 @@ prerequisite()
> echo "CPU online/offline summary:"
> online_cpus=`cat $SYSFS/devices/system/cpu/online`
> online_max=${online_cpus##*-}
> + echo "online_cpus = $online_cpus online_max = $online_max"

Bother, forgot to remove this debug.

>
> if [[ "$online_cpus" = "$online_max" ]]; then
> echo "$msg: since there is only one cpu: $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"
> +
> echo -e "\t Cpus in online state: $online_cpus"
>
> offline_cpus=`cat $SYSFS/devices/system/cpu/offline`
> @@ -46,6 +51,7 @@ prerequisite()
> offline_max=${offline_cpus##*-}
> fi
> echo -e "\t Cpus in offline state: $offline_cpus"
> +

Ugh, I added a whitespace

> }
>
> #
> @@ -151,6 +157,8 @@ online_cpus=0
> online_max=0
> offline_cpus=0
> offline_max=0
> +present_cpus=0
> +present_max=0
>
> while getopts e:ahp: opt; do
> case $opt in
> @@ -190,9 +198,10 @@ if [ $allcpus -eq 0 ]; then
> online_cpu_expect_success $online_max
>
> if [[ $offline_cpus -gt 0 ]]; then
> - echo -e "\t offline to online to offline: cpu $offline_max"
> - online_cpu_expect_success $offline_max
> - offline_cpu_expect_success $offline_max
> + echo -e "\t offline to online to offline: cpu $present_max"
> + online_cpu_expect_success $present_max
> + offline_cpu_expect_success $present_max
> + online_cpu $present_max
> fi
> exit 0
> else
>