selftests/cpu-hotplug: Reserve one cpu online at least

[ Upstream commit 51d4c85146 ]

Considering that we can not offline all cpus in any cases,
we need to reserve one cpu online when the test offline all
hotpluggable online cpus, otherwise the test will fail forever.

Fixes: d89dffa976 ("fault-injection: add selftests for cpu and memory hotplug")

Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Zhao Gongyi 2022-09-05 21:36:14 +08:00 committed by Greg Kroah-Hartman
parent 42058240cd
commit 0c8fa15e22
1 changed files with 22 additions and 18 deletions

View File

@ -149,6 +149,25 @@ offline_cpu_expect_fail()
fi
}
online_all_hot_pluggable_cpus()
{
for cpu in `hotplaggable_offline_cpus`; do
online_cpu_expect_success $cpu
done
}
offline_all_hot_pluggable_cpus()
{
local reserve_cpu=$online_max
for cpu in `hotpluggable_online_cpus`; do
# Reserve one cpu oneline at least.
if [ $cpu -eq $reserve_cpu ];then
continue
fi
offline_cpu_expect_success $cpu
done
}
allcpus=0
online_cpus=0
online_max=0
@ -197,25 +216,10 @@ else
echo -e "\t online all offline cpus"
fi
#
# Online all hot-pluggable CPUs
#
for cpu in `hotplaggable_offline_cpus`; do
online_cpu_expect_success $cpu
done
online_all_hot_pluggable_cpus
#
# Offline all hot-pluggable CPUs
#
for cpu in `hotpluggable_online_cpus`; do
offline_cpu_expect_success $cpu
done
offline_all_hot_pluggable_cpus
#
# Online all hot-pluggable CPUs again
#
for cpu in `hotplaggable_offline_cpus`; do
online_cpu_expect_success $cpu
done
online_all_hot_pluggable_cpus
exit $retval