From: Stanislav Kholmanskikh <stanislav.kholmansk...@oracle.com>

If cpu0 is hotpluggable, then the last CPU may not be cpu0, and
there is no reason to treat cpu0 as a special case.

To make the test be more generic I'm proposing these changes:
 * Operate (offline/online) only with hotpluggable CPUs, because
   how can we enable/disable a CPU if there is no 'online' file?

 * If all CPUs in the system are hotpluggable, then we expect that
   the kernel will only refuse to offline the last CPU. And this
   last CPU may not be cpu0.

 * If only a part of CPUs in the system is hotpluggable, then we
   should be able to offline all of them

Signed-off-by: Stanislav Kholmanskikh <stanislav.kholmansk...@oracle.com>
Signed-off-by: Jan Stancek <jstan...@redhat.com>
---
 .../hotplug/cpu_hotplug/functional/cpuhotplug04.sh | 52 +++++++++++++---------
 1 file changed, 30 insertions(+), 22 deletions(-)

diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug04.sh 
b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug04.sh
index 3e025da..58a822e 100755
--- a/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug04.sh
+++ b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug04.sh
@@ -48,42 +48,50 @@ done
 
 LOOP_COUNT=1
 
-get_cpus_num
-if [ $? -lt 2 ]; then
+get_present_cpus_num
+cpus_num=$?
+if [ $cpus_num -lt 2 ]; then
        tst_brkm TCONF "system doesn't have required CPU hotplug support"
 fi
 
+get_hotplug_cpus_num
+if [ $? -lt 1 ]; then
+       tst_brkm TCONF "system doesn't have at least one hotpluggable CPU"
+fi
+
 TST_CLEANUP=do_clean
 
 cpu_states=$(get_all_cpu_states)
 
 until [ $LOOP_COUNT -gt $HOTPLUG04_LOOPS ]; do
-       cpu=0
-       cpustate=1
 
-       # Online all the CPUs
+       # Online all the hotpluggable CPUs
        for i in $(get_hotplug_cpus); do
-               if [ "$i" != "cpu0" ]; then
-                       if ! cpu_is_online $i; then
-                               if ! online_cpu $i; then
-                                       tst_brkm TBROK "$i cannot be onlined"
-                               fi
-                       fi
-                       cpu=$((cpu+1))
-                       echo $i
-               else
-                       if online_cpu $i; then
-                               cpustate=0
+               if ! cpu_is_online $i; then
+                       if ! online_cpu $i; then
+                               tst_brkm TBROK "$i can not be onlined"
                        fi
                fi
        done
 
-       # Now offline all the CPUs
+       # Now offline them
+       cpu=0
        for i in $(get_hotplug_cpus); do
-               if ! offline_cpu $i; then
-                       if [ "x$i" != "xcpu0" ]; then
-                               tst_resm TFAIL "Did not offline first CPU 
(offlined $i instead)"
-                               tst_exit
+               cpu=$((cpu + 1))
+
+               # If all the CPUs are hotpluggable, we expect
+               # that the kernel will refuse to offline the last CPU.
+               # If only some of the CPUs are hotpluggable,
+               # they all can be offlined.
+               if [ $cpu -eq $cpus_num ]; then
+                       if offline_cpu $i 2> /dev/null; then
+                               tst_brkm TFAIL "Have we just offlined the last 
CPU?"
+                       else
+                               tst_resm TPASS "System prevented us from 
offlining the last CPU - $i"
+                       fi
+               else
+                       if ! offline_cpu $i; then
+                               tst_brkm TFAIL "Could not offline $i"
                        fi
                fi
        done
@@ -92,6 +100,6 @@ until [ $LOOP_COUNT -gt $HOTPLUG04_LOOPS ]; do
 
 done
 
-tst_resm TPASS "Successfully offlined first CPU, $i"
+tst_resm TPASS "Success"
 
 tst_exit
-- 
1.8.3.1


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to