public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH] power_management: add it into default
@ 2014-12-12  9:51 Xing Gu
  2015-01-20  7:15 ` gux.fnst
  2015-01-28 15:32 ` Cyril Hrubis
  0 siblings, 2 replies; 3+ messages in thread
From: Xing Gu @ 2014-12-12  9:51 UTC (permalink / raw)
  To: ltp-list

* Modify Makefile.

* Split runpwtests.sh into separate testcases,
  eg. runpwtests01.sh.

* Use functions in test.sh, eg. tst_brkm.

* Fix error of change_govr.sh, change_freq.sh, etc.

* Since I don't have suitable machines and can't test
  some testcases' correctness, currently these cases
  are disabled.

Signed-off-by: Xing Gu <gux.fnst@cn.fujitsu.com>
---
 configure.ac                                       |  14 -
 include/mk/features.mk.default                     |   7 -
 include/mk/features.mk.in                          |   7 -
 runtest/Makefile                                   |   4 -
 runtest/power_management_tests                     |   8 +-
 runtest/power_management_tests_exclusive           |  13 +-
 scenario_groups/default                            |   1 +
 testcases/kernel/Makefile                          |   6 +-
 testcases/kernel/power_management/Makefile         |  10 +-
 testcases/kernel/power_management/change_freq.sh   |   2 +-
 testcases/kernel/power_management/change_govr.sh   |   2 +-
 .../power_management/check_cpufreq_sysfs_files.sh  |   2 +-
 .../kernel/power_management/cpu_consolidation.py   |   6 +-
 testcases/kernel/power_management/ilb_test.py      |   2 -
 testcases/kernel/power_management/lib/Makefile     |  25 ++
 testcases/kernel/power_management/lib/sched_mc.py  |  50 ++-
 testcases/kernel/power_management/pm_include.sh    | 121 ++++---
 testcases/kernel/power_management/runpwtests.sh    | 380 ---------------------
 testcases/kernel/power_management/runpwtests01.sh  |  60 ++++
 testcases/kernel/power_management/runpwtests02.sh  |  58 ++++
 testcases/kernel/power_management/runpwtests03.sh  |  75 ++++
 testcases/kernel/power_management/runpwtests04.sh  |  48 +++
 testcases/kernel/power_management/runpwtests05.sh  |  93 +++++
 testcases/kernel/power_management/runpwtests06.sh  |  62 ++++
 .../power_management/runpwtests_exclusive01.sh     | 112 ++++++
 .../power_management/runpwtests_exclusive02.sh     |  82 +++++
 .../power_management/runpwtests_exclusive03.sh     | 110 ++++++
 .../power_management/runpwtests_exclusive04.sh     |  67 ++++
 .../power_management/runpwtests_exclusive05.sh     | 112 ++++++
 testcases/kernel/power_management/sched_domain.py  |   2 -
 30 files changed, 1034 insertions(+), 507 deletions(-)
 create mode 100644 testcases/kernel/power_management/lib/Makefile
 delete mode 100755 testcases/kernel/power_management/runpwtests.sh
 create mode 100755 testcases/kernel/power_management/runpwtests01.sh
 create mode 100755 testcases/kernel/power_management/runpwtests02.sh
 create mode 100755 testcases/kernel/power_management/runpwtests03.sh
 create mode 100755 testcases/kernel/power_management/runpwtests04.sh
 create mode 100755 testcases/kernel/power_management/runpwtests05.sh
 create mode 100755 testcases/kernel/power_management/runpwtests06.sh
 create mode 100755 testcases/kernel/power_management/runpwtests_exclusive01.sh
 create mode 100755 testcases/kernel/power_management/runpwtests_exclusive02.sh
 create mode 100755 testcases/kernel/power_management/runpwtests_exclusive03.sh
 create mode 100755 testcases/kernel/power_management/runpwtests_exclusive04.sh
 create mode 100755 testcases/kernel/power_management/runpwtests_exclusive05.sh

diff --git a/configure.ac b/configure.ac
index 794059c..0ca21a6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -102,20 +102,6 @@ fi
 
 # Testsuites knobs
 
-# testcases/kernel/power_management requires python.
-if test "x$with_python" = xyes; then
-    AC_ARG_WITH([power-management-testsuite],
-      [AC_HELP_STRING([--with-power-management-testsuite],
-        [compile and install the x86 power management testsuite (default=no)])],
-      [with_power_management_testsuite=yes],
-    )
-fi
-if test "x$with_power_management_testsuite" = xyes; then
-    AC_SUBST([WITH_POWER_MANAGEMENT_TESTSUITE],["yes"])
-else
-    AC_SUBST([WITH_POWER_MANAGEMENT_TESTSUITE],["no"])
-fi
-
 AC_ARG_WITH([open-posix-testsuite],
   [AC_HELP_STRING([--with-open-posix-testsuite],
     [compile and install the open posix testsuite (default=no)])],
diff --git a/include/mk/features.mk.default b/include/mk/features.mk.default
index c9edc1c..69425ca 100644
--- a/include/mk/features.mk.default
+++ b/include/mk/features.mk.default
@@ -34,13 +34,6 @@ HAVE_SECUREBITS			:= no
 
 # Test suite knobs
 
-# Enable testcases/kernel/power_management's compile and install?
-ifeq ($(UCLINUX),1)
-WITH_POWER_MANAGEMENT_TESTSUITE	:= no
-else
-WITH_POWER_MANAGEMENT_TESTSUITE	:=
-endif
-
 # Enable testcases/open_posix_testsuite's compile and install?
 WITH_OPEN_POSIX_TESTSUITE	:= no
 
diff --git a/include/mk/features.mk.in b/include/mk/features.mk.in
index 1fd28f8..49471fd 100644
--- a/include/mk/features.mk.in
+++ b/include/mk/features.mk.in
@@ -34,13 +34,6 @@ HAVE_SECUREBITS			:= @HAVE_SECUREBITS@
 
 # Test suite knobs
 
-# Enable testcases/kernel/power_management's compile and install?
-ifeq ($(UCLINUX),1)
-WITH_POWER_MANAGEMENT_TESTSUITE	:= no
-else
-WITH_POWER_MANAGEMENT_TESTSUITE	:= @WITH_POWER_MANAGEMENT_TESTSUITE@
-endif
-
 # Enable testcases/open_posix_testsuite's compile and install?
 WITH_OPEN_POSIX_TESTSUITE	:= @WITH_OPEN_POSIX_TESTSUITE@
 
diff --git a/runtest/Makefile b/runtest/Makefile
index 8702559..0907ef6 100644
--- a/runtest/Makefile
+++ b/runtest/Makefile
@@ -32,10 +32,6 @@ UNWANTED_FILES		:= Makefile CVS STAX
 
 INSTALL_MODE		:= 00644
 
-ifneq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes)
-UNWANTED_FILES		+= power_management_tests
-endif
-
 INSTALL_TARGETS		:= $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(wildcard $(abs_srcdir)/*))))
 
 MAKE_TARGETS		:=
diff --git a/runtest/power_management_tests b/runtest/power_management_tests
index 5aa18bf..884e615 100644
--- a/runtest/power_management_tests
+++ b/runtest/power_management_tests
@@ -1 +1,7 @@
-POWER_MANAGEMENT runpwtests.sh
+#POWER_MANAGEMENT
+runpwtests01 runpwtests01.sh
+runpwtests02 runpwtests02.sh
+runpwtests03 runpwtests03.sh
+runpwtests04 runpwtests04.sh
+#runpwtests05 runpwtests05.sh
+runpwtests06 runpwtests06.sh
diff --git a/runtest/power_management_tests_exclusive b/runtest/power_management_tests_exclusive
index a1692df..26176e2 100644
--- a/runtest/power_management_tests_exclusive
+++ b/runtest/power_management_tests_exclusive
@@ -1 +1,12 @@
-POWER_MANAGEMENT runpwtests.sh -exclusive
+#POWER_MANAGEMENT exclusive
+runpwtests01 runpwtests01.sh
+runpwtests02 runpwtests02.sh
+runpwtests03 runpwtests03.sh
+runpwtests04 runpwtests04.sh
+#runpwtests05 runpwtests05.sh
+runpwtests06 runpwtests06.sh
+#runpwtests_exclusive01 runpwtests_exclusive01.sh
+#runpwtests_exclusive02 runpwtests_exclusive02.sh
+#runpwtests_exclusive03 runpwtests_exclusive03.sh
+#runpwtests_exclusive04 runpwtests_exclusive04.sh
+#runpwtests_exclusive05 runpwtests_exclusive05.sh
diff --git a/scenario_groups/default b/scenario_groups/default
index 3a55702..0c2505f 100644
--- a/scenario_groups/default
+++ b/scenario_groups/default
@@ -20,6 +20,7 @@ connectors
 admin_tools
 timers
 power_management_tests
+power_management_tests_exclusive
 numa
 hugetlb
 commands
diff --git a/testcases/kernel/Makefile b/testcases/kernel/Makefile
index 50a12fa..689350b 100644
--- a/testcases/kernel/Makefile
+++ b/testcases/kernel/Makefile
@@ -53,11 +53,7 @@ SUBDIRS			+= connectors \
 			   timers \
 			   tracing \
 			   module \
-
-ifeq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes)
-SUBDIRS			+= power_management
-endif
-
+			   power_management
 endif
 
 MAKE_DEPS		:= include/linux_syscall_numbers.h
diff --git a/testcases/kernel/power_management/Makefile b/testcases/kernel/power_management/Makefile
index 24f75f8..bc189b9 100644
--- a/testcases/kernel/power_management/Makefile
+++ b/testcases/kernel/power_management/Makefile
@@ -13,8 +13,8 @@
 ## for more details.                                                          ##
 ##                                                                            ##
 ## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
+## along with this program;  if not, write to the Free Software Foundation,   ##
+## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA           ##
 ##                                                                            ##
 ################################################################################
 
@@ -22,10 +22,8 @@ top_srcdir		?= ../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
 
-vpath %.c $(srcdir):$(top_srcdir)/lib
-
-INSTALL_TARGETS		:= lib/*.py *.py *.sh
+INSTALL_TARGETS		:= *.py *.sh
 
 MAKE_DEPS		+= $(APICMDS_DIR)/tst_kvercmp
 
-include $(top_srcdir)/include/mk/generic_leaf_target.mk
+include $(top_srcdir)/include/mk/generic_trunk_target.mk
diff --git a/testcases/kernel/power_management/change_freq.sh b/testcases/kernel/power_management/change_freq.sh
index 204e21f..3a971d2 100755
--- a/testcases/kernel/power_management/change_freq.sh
+++ b/testcases/kernel/power_management/change_freq.sh
@@ -5,7 +5,7 @@ available_freq=$(get_supporting_freq)
 available_govr=$(get_supporting_govr)
 RC=0
 
-total_cpus=$(no_of_cpus)
+total_cpus=$(tst_ncpus)
 (( total_cpus-=1 ))
 
 if ( echo ${available_govr} | grep -i "userspace" 2>&1 >/dev/null ) ; then
diff --git a/testcases/kernel/power_management/change_govr.sh b/testcases/kernel/power_management/change_govr.sh
index 4c2546e..bfe6c5b 100755
--- a/testcases/kernel/power_management/change_govr.sh
+++ b/testcases/kernel/power_management/change_govr.sh
@@ -3,7 +3,7 @@
 . pm_include.sh
 available_govr=$(get_supporting_govr)
 
-total_cpus=$(no_of_cpus)
+total_cpus=$(tst_ncpus)
 (( total_cpus-=1 ))
 RC=0
 
diff --git a/testcases/kernel/power_management/check_cpufreq_sysfs_files.sh b/testcases/kernel/power_management/check_cpufreq_sysfs_files.sh
index cb51aa0..dcf8a1d 100755
--- a/testcases/kernel/power_management/check_cpufreq_sysfs_files.sh
+++ b/testcases/kernel/power_management/check_cpufreq_sysfs_files.sh
@@ -2,7 +2,7 @@
 
 . pm_include.sh
 
-total_cpus=$(no_of_cpus)
+total_cpus=$(tst_ncpus)
 (( total_cpus-=1 ))
 RC=0
 
diff --git a/testcases/kernel/power_management/cpu_consolidation.py b/testcases/kernel/power_management/cpu_consolidation.py
index 992a745..b15bb9b 100755
--- a/testcases/kernel/power_management/cpu_consolidation.py
+++ b/testcases/kernel/power_management/cpu_consolidation.py
@@ -6,8 +6,6 @@
 import os
 import sys
 import time
-LIB_DIR = "%s/lib" % os.path.dirname(__file__)
-sys.path.append(LIB_DIR)
 from optparse import OptionParser
 from sched_mc import *
 
@@ -80,6 +78,8 @@ def main(argv=None):
 
             generate_report()
             status = validate_cpu_consolidation("partial", work_ld, options.mc_value, options.smt_value)
+            if background == "yes":
+                stop_wkld(work_ld)
             if status == 0:
                 print "INFO: Consolidation worked sched_smt &(/) sched_mc is set"
                 #Disable sched_smt & sched_mc interface values
@@ -95,8 +95,10 @@ def main(argv=None):
                     smt_value = 0
 
                 if work_ld == "kernbench":
+                    trigger_kernbench (smt_value, "partial", background, pinned, "no")
                     time.sleep(240)
                 else:
+                    trigger_ebizzy (smt_value, "partial", duration, background, pinned)
                     time.sleep(120)
 
                 generate_report()
diff --git a/testcases/kernel/power_management/ilb_test.py b/testcases/kernel/power_management/ilb_test.py
index cec0b29..ec990bc 100755
--- a/testcases/kernel/power_management/ilb_test.py
+++ b/testcases/kernel/power_management/ilb_test.py
@@ -5,8 +5,6 @@
 
 import os
 import sys
-LIB_DIR = "%s/lib" % os.path.dirname(__file__)
-sys.path.append(LIB_DIR)
 from optparse import OptionParser
 from sched_mc import *
 
diff --git a/testcases/kernel/power_management/lib/Makefile b/testcases/kernel/power_management/lib/Makefile
new file mode 100644
index 0000000..cf7f079
--- /dev/null
+++ b/testcases/kernel/power_management/lib/Makefile
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2014 Fujitsu Ltd.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+top_srcdir                      ?= ../../../..
+
+include $(top_srcdir)/include/mk/env_pre.mk
+
+INSTALL_TARGETS		:= *.py
+
+include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/power_management/lib/sched_mc.py b/testcases/kernel/power_management/lib/sched_mc.py
index cb78b55..1687f6f 100755
--- a/testcases/kernel/power_management/lib/sched_mc.py
+++ b/testcases/kernel/power_management/lib/sched_mc.py
@@ -319,25 +319,17 @@ def trigger_ebizzy (sched_smt, stress, duration, background, pinned):
     try:
         threads = get_job_count(stress, "ebizzy", sched_smt)
         olddir = os.getcwd()
-        path = '%s/utils/benchmark' % os.environ['LTPROOT']
+        path = '%s/testcases/bin' % os.environ['LTPROOT']
         os.chdir(path)
-        wklds_avlbl = list()
-        workload = "ebizzy"
-        workload_dir = ""
-
-        # Use the latest version of similar workload available
+        workload_file = ""
         for file_name in os.listdir('.'):
-            if file_name.find(workload) != -1:
-                wklds_avlbl.append(file_name)
-
-        wklds_avlbl.sort()
-        workload_dir = wklds_avlbl[len(wklds_avlbl)-1]
-        if workload_dir != "":
-            new_path = os.path.join(path,"%s" % workload_dir)
+            if file_name == "ebizzy":
+                workload_file = file_name
+                break
+        if workload_file != "":
             get_proc_data(stats_start)
             get_proc_loc_count(intr_start)
             try:
-                os.chdir(new_path)
                 if background == "yes":
                     succ = os.system('./ebizzy -t%s -s4096 -S %s >/dev/null &'
                         % (threads, duration))
@@ -356,13 +348,16 @@ def trigger_ebizzy (sched_smt, stress, duration, background, pinned):
                     #in background
                     #get_proc_loc_count(intr_stop)
                     #get_proc_data(stats_stop)
-		else:
+                else:
                     print "INFO: ebizzy workload triggerd failed"
                     os.chdir(olddir)
                     sys.exit(1)
             except Exception, details:
                 print "Ebizzy workload trigger failed ", details
                 sys.exit(1)
+        else:
+            print "INFO: ebizzy benchmark not found"
+            sys.exit(1)
     except Exception, details:
         print "Ebizzy workload trigger failed ", details
         sys.exit(1)
@@ -378,21 +373,18 @@ def trigger_kernbench (sched_smt, stress, background, pinned, perf_test):
 
         dst_path = "/root"
         olddir = os.getcwd()
-        path = '%s/utils/benchmark' % os.environ['LTPROOT']
+        path = '%s/testcases/bin' % os.environ['LTPROOT']
         os.chdir(path)
-        wklds_avlbl = list()
+        workload_file = ""
         for file_name in os.listdir('.'):
-            if file_name.find("kernbench") != -1:
-                wklds_avlbl.append(file_name)
-        if len(wklds_avlbl):
-            wklds_avlbl.sort()
-            workload_dir = wklds_avlbl[len(wklds_avlbl)-1]
-            if workload_dir != "":
-                benchmark_path = os.path.join(path,"%s" % workload_dir)
-            else:
-                print "INFO: kernbench benchmark not found"
-                sys.exit(1)
-        os.chdir(olddir)
+            if file_name == "kernbench":
+                workload_file = file_name
+                break
+        if workload_file != "":
+            benchmark_path = path
+        else:
+            print "INFO: kernbench benchmark not found"
+            sys.exit(1)
 
         os.chdir(dst_path)
         linux_source_dir=""
@@ -405,7 +397,7 @@ def trigger_kernbench (sched_smt, stress, background, pinned, perf_test):
         else:
             print "INFO: Linux kernel source not found in /root. Workload\
                Kernbench cannot be executed"
-	    sys.exit(1)
+            sys.exit(1)
 
         get_proc_data(stats_start)
         get_proc_loc_count(intr_start)
diff --git a/testcases/kernel/power_management/pm_include.sh b/testcases/kernel/power_management/pm_include.sh
index b1867e6..70ea4d2 100755
--- a/testcases/kernel/power_management/pm_include.sh
+++ b/testcases/kernel/power_management/pm_include.sh
@@ -30,7 +30,8 @@ get_topology() {
 	for cpu in $(seq 0 "${total_cpus}" )
 	do
 		cpus[$cpu]=cpu${cpu}
-		phyid[$cpu]=$(cat /sys/devices/system/cpu/cpu${cpu}/topology/physical_package_id)
+		phyid[$cpu]=$(cat \
+		/sys/devices/system/cpu/cpu${cpu}/topology/physical_package_id)
 	done
 	j=0
 	while [ "${j}" -lt "${total_cpus}" ]
@@ -50,18 +51,22 @@ check_cpufreq() {
 	for cpu in $(seq 0 "${total_cpus}" )
 	do
 		if [ ! -d /sys/devices/system/cpu/cpu${cpu}/cpufreq ] ; then
-			echo "NOSUPPORT: cpufreq support not found please check Kernel configuration or BIOS settings"
+			echo "NOSUPPORT: cpufreq support not" \
+				"found please check Kernel configuration" \
+				"or BIOS settings"
 			exit $NOSUPPORT
 		fi
 	done
 }
 
 get_supporting_freq() {
-	cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies | uniq
+	cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies \
+		| uniq
 }
 
 get_supporting_govr() {
-	cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors | uniq
+	cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors \
+		| uniq
 }
 
 is_hyper_threaded() {
@@ -102,7 +107,9 @@ check_input() {
 }
 
 is_multi_socket() {
-	no_of_sockets=`cat /sys/devices/system/cpu/cpu?/topology/physical_package_id | uniq | wc -l`
+	no_of_sockets=`cat \
+		/sys/devices/system/cpu/cpu?/topology/physical_package_id \
+		| uniq | wc -l`
 	[ $no_of_sockets -gt 1 ] ; return $?
 }
 
@@ -119,7 +126,8 @@ is_multi_core() {
 
 is_dual_core() {
 	siblings=`cat /proc/cpuinfo | grep siblings | uniq | cut -f2 -d':'`
-        cpu_cores=`cat /proc/cpuinfo | grep "cpu cores" | uniq | cut -f2 -d':'`
+        cpu_cores=`cat /proc/cpuinfo | grep "cpu cores" | uniq \
+			| cut -f2 -d':'`
         if [ $siblings -eq $cpu_cores ]; then
                 [ $cpu_cores -eq 2 ]; return $?
         else
@@ -130,7 +138,8 @@ is_dual_core() {
 
 get_kernel_version() {
 	# Get kernel minor version
-	export kernel_version=`uname -r | awk -F. '{print $1"."$2"."$3}' | cut -f1 -d'-'`
+	export kernel_version=`uname -r | awk -F. '{print $1"."$2"."$3}' \
+		| cut -f1 -d'-'`
 }
 
 get_valid_input() {
@@ -146,42 +155,46 @@ analyze_result_hyperthreaded() {
 	sched_mc=$1
     pass_count=$2
     sched_smt=$3
+	PASS="Test PASS"
+	FAIL="Test FAIL"
 
+	RC=0
 	case "$sched_mc" in
 	0)
 		case "$sched_smt" in
 		0)
 			if [ $pass_count -lt 5 ]; then
-				tst_resm TPASS "cpu consolidation failed for sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
+				echo "${PASS}: cpu consolidation failed for" \
+					"sched_mc=$sched_mc & sched_smt=$sched_smt"
 			else
 				RC=1
-				tst_resm TFAIL "cpu consolidation passed for sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
+				echo "${FAIL}: cpu consolidation passed for" \
+					"sched_mc=$sched_mc & sched_smt=$sched_smt"
 			fi
 			;;
 		*)
 			if [ $pass_count -lt 5 ]; then
-               	tst_resm TFAIL "cpu consolidation for sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
-           	else
 				RC=1
-				tst_resm TPASS "cpu consolidation for sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
+				echo "${FAIL}: cpu consolidation for" \
+					"sched_mc=$sched_mc & sched_smt=$sched_smt"
+			else
+				echo "${PASS}: cpu consolidation for" \
+					"sched_mc=$sched_mc & sched_smt=$sched_smt"
 			fi
 			;;
 		esac ;;
 	*)
 		if [ $pass_count -lt 5 ]; then
-			tst_resm TFAIL "cpu consolidation for sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
-		else
 			RC=1
-			tst_resm TPASS "cpu consolidation for sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
+			echo "${FAIL}: cpu consolidation for" \
+				"sched_mc=$sched_mc & sched_smt=$sched_smt"
+		else
+			echo "${PASS}: cpu consolidation for" \
+				"sched_mc=$sched_mc & sched_smt=$sched_smt"
 		fi
 		;;
 	esac
+	return $RC
 }
 
 analyze_package_consolidation_result() {
@@ -195,84 +208,104 @@ analyze_package_consolidation_result() {
 		sched_smt=-1
 	fi
 
+	PASS="Test PASS"
+	FAIL="Test FAIL"
+
+	RC=0
 	if [ $hyper_threaded -eq $YES -a $sched_smt -gt -1 ]; then
 		analyze_result_hyperthreaded $sched_mc $pass_count $sched_smt
 	else
 		case "$sched_mc" in
 	    0)
     	    if [ $pass_count -lt 5 ]; then
-        	    tst_resm TPASS "cpu consolidation failed for sched_mc=\
-$sched_mc"
+				echo "${PASS}: cpu consolidation failed for" \
+					"sched_mc=$sched_mc"
         	else
 				RC=1
-            	tst_resm TFAIL "cpu consolidation passed for sched_mc=\
-$sched_mc"
-        	fi ;;
+				echo "${FAIL}: cpu consolidation passed for" \
+					"sched_mc=$sched_mc"
+			fi
+			;;
     	*)
 			if [ $pass_count -lt 5 ]; then
-				tst_resm TFAIL "Consolidation at package level failed for \
-sched_mc=$sched_mc"
+				RC=1
+				echo "${FAIL}: consolidation at package level" \
+					"failed for sched_mc=$sched_mc"
 			else
-				tst_resm TPASS "Consolidation at package level passed for \
-sched_mc=$sched_mc"
+				echo "${PASS}: consolidation at package level" \
+					"passed for sched_mc=$sched_mc"
 			fi
         	;;
     	esac
 	fi
+	return $RC
 }
 
 analyze_core_consolidation_result() {
 	sched_smt=$1
 	pass_count=$2
+	PASS="Test PASS"
+	FAIL="Test FAIL"
 
+	RC=0
 	case "$sched_smt" in
 	0)
 		if [ $pass_count -lt 5 ]; then
-			tst_resm TPASS "Consolidation at core level failed \
-when sched_smt=$sched_smt"
+			echo "${PASS}: consolidation at core level failed" \
+				"when sched_smt=$sched_smt"
 		else
-			tst_resm TFAIL "Consolidation at core level passed for \
-sched_smt=$sched_smt"
+			RC=1
+			echo "${FAIL}: consolidation at core level passed for" \
+				"sched_smt=$sched_smt"
 		fi ;;
 	*)
 		if [ $pass_count -lt 5 ]; then
 			RC=1
-			tst_resm TFAIL "Consolidation at core level failed for \
-sched_smt=$sched_smt"
+			echo "${FAIL}: consolidation at core level failed for" \
+				"sched_smt=$sched_smt"
 		else
-			tst_resm TPASS "Consolidation at core level passed for \
-sched_smt=$sched_smt"
+			echo "${PASS}: consolidation at core level passed for" \
+				"sched_smt=$sched_smt"
 		fi ;;
 	esac
+	return $RC
 }
 
 analyze_sched_domain_result(){
 	sched_mc=$1
 	result=$2
 	sched_smt=$3
+	PASS="Test PASS"
+	FAIL="Test FAIL"
 
+	RC=0
 	if [ $hyper_threaded -eq $YES ]; then
 		if [ $sched_smt ]; then
 			if [ "$result" = 0 ];then
-				tst_resm TPASS "sched domain test for sched_mc=$sched_mc & sched_smt=$sched_smt"
+				echo "${PASS}: sched domain test for" \
+					"sched_mc=$sched_mc & sched_smt=$sched_smt"
 			else
 				RC=1
-				tst_resm TFAIL "sched domain test sched_mc=$sched_mc & sched_smt=$sched_smt"
+				echo "${FAIL}: sched domain test for" \
+					"sched_mc=$sched_mc & sched_smt=$sched_smt"
 			fi
 		else
 			if [ "$result" = 0 ];then
-				tst_resm TPASS "sched domain test for sched_mc=$sched_mc"
+				echo "${PASS}: sched domain test for" \
+					"sched_mc=$sched_mc"
 			else
 				RC=1
-				tst_resm TFAIL "sched domain test for sched_mc=$sched_mc"
+				echo "${FAIL}: sched domain test for" \
+					"sched_mc=$sched_mc"
 			fi
 		fi
 	else
 		if [ "$result" = 0 ];then
-			tst_resm TPASS "sched domain test for sched_mc=$sched_mc"
+			echo "${PASS}: sched domain test for sched_mc=$sched_mc"
 		else
 			RC=1
-			tst_resm TFAIL "sched domain test sched_mc=$sched_mc"
+			echo "${FAIL}: sched domain test for sched_mc=$sched_mc"
 		fi
 	fi
+	return $RC
 }
diff --git a/testcases/kernel/power_management/runpwtests.sh b/testcases/kernel/power_management/runpwtests.sh
deleted file mode 100755
index 9055964..0000000
--- a/testcases/kernel/power_management/runpwtests.sh
+++ /dev/null
@@ -1,380 +0,0 @@
-#! /bin/sh
-################################################################################
-##                                                                            ##
-## Copyright (c) International Business Machines  Corp., 2001                 ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-################################################################################
-#
-# File :        runpwtests.sh
-#
-# Description:
-#
-# Author:       Nageswara R Sastry <nasastry@in.ibm.com>
-#
-# History:      26 Aug 2008 - Created this file
-# 03 Nov 2008 - Added CPUIDLE sysfs testcase
-#
-
-# Exporting Required variables
-export TST_TOTAL=1
-#LTPTMP=${TMP}
-export PATH=${PATH}:.
-export TCID="Power_Management"
-export TST_COUNT=0
-export contacts="mpnayak@linux.vnet.ibm.com"
-export analysis="/proctstat"
-
-YES=0
-NO=1
-#List of reusable functions defined in pm_include.sh
-. pm_include.sh
-
-# Function:     main
-#
-# Description:  - Execute all tests, exit with test status.
-#
-# Exit:         - zero on success
-#               - non-zero on failure.
-#
-RC=0		#Return status
-
-# Checking required kernel version and architecture
-tst_kvercmp 2 6 21; rc=$?
-if [ $rc -ne 1 -a $rc -ne 2 ] ; then
-	tst_resm TCONF "Kernel version not supported; not running testcases"
-	exit 0
-else
-	case "$(uname -m)" in
-	i[4-6]86|x86_64)
-		;;
-	*)
-		tst_resm TCONF "Arch not supported; not running testcases"
-		exit 0
-		;;
-	esac
-fi
-
-tst_kvercmp 2 6 29; rc=$?
-if [ $rc -eq 2 ] ; then
-	max_sched_mc=2
-	max_sched_smt=2
-else
-	max_sched_mc=1
-	max_sched_smt=1
-fi
-
-tst_kvercmp 2 6 31; rc=$?
-if [ $rc -eq 1 -o $rc -eq 2 ] ; then
-	timer_migr_support_compatible=1
-else
-	timer_migr_support_compatible=0
-fi
-
-is_hyper_threaded; hyper_threaded=$?
-is_multi_socket; multi_socket=$?
-is_multi_core; multi_core=$?
-is_dual_core; dual_core=$?
-
-#Checking sched_mc sysfs interface
-#check_config.sh config_sched_mc || RC=$?
-TST_COUNT=1
-if [ $multi_socket -eq $YES -a $multi_core -eq $YES ] ; then
-	if [ -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
-		if test_sched_mc.sh ; then
-			tst_resm TPASS "SCHED_MC sysfs tests"
-		else
-			RC=$?
-			tst_resm TFAIL "SCHED_MC sysfs tests"
-		fi
-	else
-    	tst_resm TCONF "Required kernel configuration for SCHED_MC NOT set"
-	fi
-else
-	if [ -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
-		tst_resm TFAIL "sched_mc_power_savings interface in system which is not a multi socket &(/) multi core"
-	else
-		tst_resm TCONF "Not a suitable architecture for SCHED_MC test"
-	fi
-fi
-
-# Test sched_smt_power_savings interface on HT machines
-: $(( TST_COUNT += 1 ))
-if [ $hyper_threaded -eq $YES ]; then
-	if [ -f /sys/devices/system/cpu/sched_smt_power_savings ] ; then
-    	if test_sched_smt.sh; then
-			tst_resm TPASS "SCHED_SMT sysfs test"
-		else
-			RC=$?
-        	tst_resm TFAIL "SCHED_SMT sysfs test"
-    	fi
-	else
-		RC=$?
-		tst_resm TFAIL "Required kernel configuration for SCHED_SMT NOT set"
-	fi
-else
-	if [ -f /sys/devices/system/cpu/sched_smt_power_savings ] ; then
-		RC=$?
-        tst_resm TFAIL "sched_smt_power_saving interface in system not hyper-threaded"
-    else
-        tst_resm TCONF "Required Hyper Threading support for SCHED_SMT test"
-    fi
-fi
-
-# Checking cpufreq sysfs interface files
-#check_config.sh config_cpu_freq || RC=$?
-: $(( TST_COUNT += 1 ))
-if [ -d /sys/devices/system/cpu/cpu0/cpufreq ] ; then
-    if check_cpufreq_sysfs_files.sh; then
-		tst_resm TPASS "CPUFREQ sysfs tests"
-	else
-		RC=$?
-		tst_resm TFAIL "CPUFREQ sysfs tests "
-	fi
-
-    # Changing governors
-	: $(( TST_COUNT += 1 ))
-	if change_govr.sh; then
-		tst_resm TPASS "Changing governors "
-	else
-		RC=$?
-		tst_resm TFAIL "Changing governors "
-	fi
-
-    # Changing frequencies
-	: $(( TST_COUNT += 1 ))
-    if change_freq.sh ; then
-		tst_resm TPASS "Changing frequncies "
-	else
-		RC=$?
-        tst_resm TFAIL "Changing frequncies "
-    fi
-
-    # Loading and Unloading governor related kernel modules
-	: $(( TST_COUNT += 1 ))
-    if pwkm_load_unload.sh ; then
-		tst_resm TPASS "Loading and Unloading of governor kernel \
-modules"
-	else
-		RC=$?
-        tst_resm TFAIL "Loading and Unloading of governor kernel \
-        modules got failed"
-    fi
-else
-    tst_resm TCONF "Required kernel configuration for CPU_FREQ NOT set"
-fi
-
-# Checking cpuidle sysfs interface files
-: $(( TST_COUNT+=1))
-if check_cpuidle_sysfs_files.sh ; then
-	tst_resm TPASS "CPUIDLE sysfs tests passed"
-else
-	RC=$?
-    tst_resm TFAIL "CPUIDLE sysfs tests failed"
-fi
-
-# sched_domain test
-if ! type python > /dev/null ; then
-	tst_resm TCONF "Python is not installed, CPU Consolidation\
-test cannot run"
-elif ! grep sched_debug -qw /proc/cmdline ; then
-	tst_resm TCONF "Kernel cmdline parameter 'sched_debug' needed,\
-CPU Consolidation test cannot run"
-else
-	if [ -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
-    		echo "max sched mc $max_sched_mc"
-		for sched_mc in `seq 0 $max_sched_mc`; do
-			: $(( TST_COUNT+=1))
-			sched_domain.py -c $sched_mc; RC=$?
-			analyze_sched_domain_result $sched_mc $RC
-			if [ $hyper_threaded -eq $YES -a -f /sys/devices/system/cpu/sched_smt_power_savings ]; then
-				get_sched_values sched_smt; max_sched_smt=$?
-				for sched_smt in `seq 0 $max_sched_smt`; do
-					# Testcase to validate sched_domain tree
-					: $(( TST_COUNT+=1))
-					sched_domain.py -c $sched_mc -t $sched_smt; RC=$?
-					analyze_sched_domain_result $sched_mc $RC $sched_smt ;
-				done
-			fi
-		done
-	fi
-fi
-
-: $(( TST_COUNT+=1))
-if [ -f /proc/sys/kernel/timer_migration ]; then
-	if [ $timer_migr_support_compatible -eq $YES ]; then
-		if test_timer_migration.sh; then
-        	tst_resm TPASS "Timer Migration interface test"
-    	else
-        	RC=$?
-        	tst_resm TFAIL "Timer migration interface test"
-		fi
-	fi
-else
-	if [ $timer_migr_support_compatible -eq $YES ]; then
-		RC=$?
-		tst_resm TFAIL "Timer migration interface missing"
-	else
-		tst_resm TCONF "Kernel version does not support Timer migration"
-	fi
-fi
-
-if [ $# -gt 0 -a "$1" = "-exclusive" ]; then
-	# Test CPU consolidation
-	if [ $multi_socket -eq $YES -a $multi_core -eq $YES ]; then
-		for sched_mc in `seq 0  $max_sched_mc`; do
-			: $(( TST_COUNT += 1 ))
-			sched_mc_pass_cnt=0
-			if [ $sched_mc -eq 2 ]; then
-				work_load="kernbench"
-			else
-				work_load="ebizzy"
-			fi
-			for repeat_test in `seq 1  10`; do
-				#Testcase to validate CPU consolidation for sched_mc
-				if cpu_consolidation.py -c $sched_mc -w $work_load ; then
-					: $(( sched_mc_pass_cnt += 1 ))
-				fi
-			done
-			analyze_package_consolidation_result $sched_mc $sched_mc_pass_cnt
-
-			if [ $hyper_threaded -eq $YES ]; then
-				for sched_smt in `seq 0 $max_sched_smt`; do
-					: $(( TST_COUNT += 1 ))
-					sched_mc_smt_pass_cnt=0
-					for repeat_test in `seq 1  10`; do
-						# Testcase to validate CPU consolidation for
-						# for sched_mc & sched_smt with stress=50%
-						if cpu_consolidation.py -c $sched_mc -t $sched_smt -w $work_load; then
-							: $(( sched_mc_smt_pass_cnt += 1 ))
-						fi
-					done
-					analyze_package_consolidation_result $sched_mc $sched_mc_smt_pass_cnt $sched_smt
-				done
-			fi
-		done
-
-	fi
-
-	if [ $hyper_threaded -eq $YES -a $multi_socket -eq $YES -a $multi_core -eq $NO ]; then
-			#Testcase to validate consolidation at core level
-			for sched_smt in `seq 0 $max_sched_smt`; do
-				if [ $sched_smt -eq 2 ]; then
-				 	work_load="kernbench"
-				else
-					work_load="ebizzy"
-				fi
-				sched_smt_pass_cnt=0
-				: $(( TST_COUNT += 1 ))
-				stress="thread"
-				for repeat_test in `seq 1  10`; do
-					if cpu_consolidation.py -t $sched_smt -w $work_load -s $stress; then
-						: $(( sched_smt_pass_cnt += 1 ))
-					fi
-				done
-				analyze_core_consolidation_result $sched_smt $sched_smt_pass_cnt
-			done
-	fi
-
-	# Verify threads consolidation stops when sched_mc &(/) sched_smt is disabled
-    if [ $multi_socket -eq $YES -a $multi_core -eq $YES ]; then
-        for sched_mc in `seq 1  $max_sched_mc`; do
-			: $(( TST_COUNT += 1 ))
-
-			# Vary sched_mc from 1/2 to 0 when workload is running and ensure that
-			# tasks do not consolidate to single package when sched_mc is set to 0
-			if cpu_consolidation.py -v -c $sched_mc; then
-            	tst_resm TPASS "CPU consolidation test by varying sched_mc $sched_mc to 0"
-        	else
-            	tst_resm TFAIL "CPU consolidation test by varying sched_mc $sched_mc to 0"
-        	fi
-
-			if [ $hyper_threaded -eq $YES ]; then
-				for sched_smt in `seq 1  $max_sched_smt`; do
-					if [ $sched_smt -eq $sched_mc ]; then
-						# Vary sched_mc & sched_smt from 1 to 0 & 2 to 0 when workload is running and ensure that
-            			# tasks do not consolidate to single package when sched_mc is set to 0
-            			: $(( TST_COUNT += 1 ))
-						if cpu_consolidation.py -v -c $sched_mc -t $sched_smt; then
-							tst_resm TPASS "CPU consolidation test by varying sched_mc \
-& sched_smt from $sched_mc to 0"
-						else
-							tst_resm TFAIL "CPU consolidation test by varying sched_mc \
-& sched_smt from $sched_mc to 0"
-						fi
-					fi
-				done
-			fi
-		done
-	fi
-
-    # Verify threads consolidation stops when sched_smt is disabled in HT systems
-	if [ $hyper_threaded -eq $YES -a $multi_socket -eq $YES ]; then
-		# Vary only sched_smt from 1 to 0 when workload is running and ensure that
-		# tasks do not consolidate to single core when sched_smt is set to 0
-		: $(( TST_COUNT += 1 ))
-		if cpu_consolidation.py -v -t 1; then
-			tst_resm TPASS "CPU consolidation test by varying sched_smt from 1 to 0"
-		else
-			tst_resm TFAIL "CPU consolidation test by varying sched_smt from 1 to 0"
-		fi
-
-        # Vary only sched_smt from 2 to 0 when workload is running and ensure that
-        # tasks do not consolidate to single core when sched_smt is set to 0
-        : $(( TST_COUNT += 1 ))
-        if cpu_consolidation.py -v -t 2; then
-            tst_resm TPASS "CPU consolidation test by varying sched_smt 2 to 0"
-        else
-            tst_resm TFAIL "CPU consolidation test by varying sched_smt 2 to 0"
-        fi
-
-	fi
-
-	# Verify ILB runs in same package as workload
-    if [ $multi_socket -eq $YES -a $multi_core -eq $YES ]; then
-		for sched_mc in `seq 1 $max_sched_mc`; do
-			: $(( TST_COUNT += 1 ))
-            if [ $sched_mc -eq 2 ]; then
-                work_load="kernbench"
-            else
-                work_load="ebizzy"
-            fi
-
-            ilb_test.py -c $sched_mc -w $work_load; RC=$?
-			if [ $RC -eq 0 ]; then
-				tst_resm TPASS "ILB & workload in same package for sched_mc=$sched_mc"
-			else
-				tst_resm TFAIL "ILB & workload did not run in same package for sched_mc=$sched_mc\
-. Ensure CONFIG_NO_HZ is set"
-			fi
-			if [ $hyper_threaded -eq $YES ]; then
-				for sched_smt in `seq 1 $max_sched_smt`; do
-					: $(( TST_COUNT += 1 ))
-					ilb_test.py -c $sched_mc -t sched_smt -w $work_load; RC=$?
- 					if [ $RC -eq 0 ]; then
-						tst_resm TPASS "ILB & workload in same package for sched_mc=$sched_mc \
-& sched_smt=$sched_smt"
-					else
-						tst_resm TFAIL "ILB & workload did not execute in same package for \
-sched_mc=$sched_mc & sched_smt=$sched_smt. Ensure CONFIG_NO_HZ is set"
-					fi
-				done
-			fi
-		done
-	fi
-fi
-
-exit $RC
diff --git a/testcases/kernel/power_management/runpwtests01.sh b/testcases/kernel/power_management/runpwtests01.sh
new file mode 100755
index 0000000..0e5dd1c
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests01.sh
@@ -0,0 +1,60 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management01"
+export TST_TOTAL=1
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+# Checking sched_mc sysfs interface
+is_multi_socket; multi_socket=$?
+is_multi_core; multi_core=$?
+if [ ! -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
+	tst_brkm TCONF "Required kernel configuration for SCHED_MC" \
+		"NOT set"
+else
+	if [ $multi_socket -ne 0 -a $multi_core -ne 0 ] ; then
+		tst_brkm TCONF "sched_mc_power_savings interface in system" \
+			"which is not a multi socket &(/) multi core"
+	fi
+fi
+
+if test_sched_mc.sh ; then
+	tst_resm TPASS "SCHED_MC sysfs tests"
+else
+	tst_resm TFAIL "SCHED_MC sysfs tests"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests02.sh b/testcases/kernel/power_management/runpwtests02.sh
new file mode 100755
index 0000000..84f6f98
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests02.sh
@@ -0,0 +1,58 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management02"
+export TST_TOTAL=1
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+# Check sched_smt_power_savings interface on HT machines
+is_hyper_threaded; hyper_threaded=$?
+if [ ! -f /sys/devices/system/cpu/sched_smt_power_savings ] ; then
+	tst_brkm TCONF "Required kernel configuration for SCHED_SMT NOT set"
+else
+	if [ $hyper_threaded -ne 0 ]; then
+		tst_brkm TCONF "sched_smt_power_saving interface in system" \
+			"not hyper-threaded"
+	fi
+fi
+
+if test_sched_smt.sh ; then
+	tst_resm TPASS "SCHED_SMT sysfs test"
+else
+	tst_resm TFAIL "SCHED_SMT sysfs test"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests03.sh b/testcases/kernel/power_management/runpwtests03.sh
new file mode 100755
index 0000000..844006d
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests03.sh
@@ -0,0 +1,75 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management03"
+export TST_TOTAL=4
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+# Checking cpufreq sysfs interface files
+if [ ! -d /sys/devices/system/cpu/cpu0/cpufreq ] ; then
+	tst_brkm TCONF "Required kernel configuration for CPU_FREQ NOT set"
+fi
+
+if check_cpufreq_sysfs_files.sh ; then
+	tst_resm TPASS "CPUFREQ sysfs tests"
+else
+	tst_resm TFAIL "CPUFREQ sysfs tests"
+fi
+
+# Changing governors
+if change_govr.sh ; then
+	tst_resm TPASS "Changing governors"
+else
+	tst_resm TFAIL "Changing governors"
+fi
+
+# Changing frequencies
+if change_freq.sh ; then
+	tst_resm TPASS "Changing frequncies"
+else
+    tst_resm TFAIL "Changing frequncies"
+fi
+
+# Loading and Unloading governor related kernel modules
+if pwkm_load_unload.sh ; then
+	tst_resm TPASS "Loading and Unloading of governor kernel" \
+		"modules"
+else
+	tst_resm TFAIL "Loading and Unloading of governor kernel" \
+		"modules got failed"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests04.sh b/testcases/kernel/power_management/runpwtests04.sh
new file mode 100755
index 0000000..5b70f39
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests04.sh
@@ -0,0 +1,48 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management04"
+export TST_TOTAL=1
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+# Checking cpuidle sysfs interface files
+if check_cpuidle_sysfs_files.sh ; then
+	tst_resm TPASS "CPUIDLE sysfs tests passed"
+else
+    tst_resm TFAIL "CPUIDLE sysfs tests failed"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests05.sh b/testcases/kernel/power_management/runpwtests05.sh
new file mode 100755
index 0000000..0867a3c
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests05.sh
@@ -0,0 +1,93 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management05"
+export TST_TOTAL=2
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+tst_kvercmp 2 6 29; rc=$?
+if [ $rc -eq 2 ] ; then
+	max_sched_mc=2
+	max_sched_smt=2
+else
+	max_sched_mc=1
+	max_sched_smt=1
+fi
+
+tst_check_cmds python
+
+if ! grep sched_debug -qw /proc/cmdline ; then
+	tst_brkm TCONF "Kernel cmdline parameter 'sched_debug' needed," \
+		"CPU Consolidation test cannot run"
+fi
+
+is_hyper_threaded; hyper_threaded=$?
+if [ ! -f /sys/devices/system/cpu/sched_mc_power_savings \
+	-o $hyper_threaded -ne 0 ] ; then
+	tst_brkm TCONF "Required kernel configuration for SCHED_MC" \
+		"NOT set, or sched_mc_power_savings interface in system" \
+		"which is not hyper-threaded"
+fi
+
+# sched_domain test
+echo "max sched mc $max_sched_mc"
+RC=0
+for sched_mc in `seq 0 $max_sched_mc`; do
+	sched_domain.py -c $sched_mc; ret=$?
+	analyze_sched_domain_result $sched_mc $ret; RC=$?
+done
+if [ $RC -eq 0 ]; then
+	tst_resm TPASS "Sched_domain test for sched_mc"
+else
+	tst_resm TFAIL "Sched_domain test for sched_mc"
+fi
+
+# Testcase to validate sched_domain tree
+RC=0
+for sched_mc in `seq 0 $max_sched_mc`; do
+	get_sched_values sched_smt; max_sched_smt=$?
+	for sched_smt in `seq 0 $max_sched_smt`; do
+		sched_domain.py -c $sched_mc -t $sched_smt; ret=$?
+		analyze_sched_domain_result $sched_mc $ret $sched_smt; RC=$?
+	done
+done
+if [ $RC -eq 0 ]; then
+	tst_resm TPASS "Sched_domain test for sched_mc & sched_smt"
+else
+	tst_resm TFAIL "Sched_domain test for sched_mc & sched_smt"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests06.sh b/testcases/kernel/power_management/runpwtests06.sh
new file mode 100755
index 0000000..384362f
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests06.sh
@@ -0,0 +1,62 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management06"
+export TST_TOTAL=1
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+tst_kvercmp 2 6 31; rc=$?
+if [ $rc -eq 1 -o $rc -eq 2 ] ; then
+	timer_migr_support_compatible=0
+else
+	timer_migr_support_compatible=1
+fi
+
+if [ $timer_migr_support_compatible -eq 1 ]; then
+	tst_brkm TCONF "Kernel version does not support Timer migration"
+else
+	if [ ! -f /proc/sys/kernel/timer_migration ]; then
+		tst_brkm TBROK "Timer migration interface missing"
+	fi
+fi
+
+if test_timer_migration.sh; then
+	tst_resm TPASS "Timer Migration interface test"
+else
+	tst_resm TFAIL "Timer migration interface test"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests_exclusive01.sh b/testcases/kernel/power_management/runpwtests_exclusive01.sh
new file mode 100755
index 0000000..02b974f
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests_exclusive01.sh
@@ -0,0 +1,112 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management_exclusive01"
+export TST_TOTAL=2
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+tst_kvercmp 2 6 29; rc=$?
+if [ $rc -eq 2 ] ; then
+	max_sched_mc=2
+	max_sched_smt=2
+else
+	max_sched_mc=1
+	max_sched_smt=1
+fi
+
+is_hyper_threaded; hyper_threaded=$?
+is_multi_socket; multi_socket=$?
+is_multi_core; multi_core=$?
+if [ $multi_socket -ne 0 -o $multi_core -ne 0 -o \
+	$hyper_threaded -ne 0 ]; then
+	tst_brkm TCONF "System is not a multi socket & multi core" \
+		"& hyper-threaded"
+fi
+
+# Test CPU consolidation
+RC=0
+for sched_mc in `seq 0  $max_sched_mc`; do
+	sched_mc_pass_cnt=0
+	if [ $sched_mc -eq 2 ]; then
+		work_load="kernbench"
+	else
+		work_load="ebizzy"
+	fi
+	for repeat_test in `seq 1  10`; do
+		#Testcase to validate CPU consolidation for sched_mc
+		if cpu_consolidation.py -c $sched_mc -w $work_load ; then
+		: $(( sched_mc_pass_cnt += 1 ))
+		fi
+	done
+	analyze_package_consolidation_result $sched_mc \
+		$sched_mc_pass_cnt; RC=$?
+done
+if [ $RC -eq 0 ]; then
+	tst_resm TPASS "CPU consolidation test for sched_mc"
+else
+	tst_resm TFAIL "CPU consolidation test for sched_mc"
+fi
+
+RC=0
+for sched_mc in `seq 0  $max_sched_mc`; do
+	if [ $sched_mc -eq 2 ]; then
+		work_load="kernbench"
+	else
+		work_load="ebizzy"
+	fi
+	for sched_smt in `seq 0 $max_sched_smt`; do
+		sched_mc_smt_pass_cnt=0
+		for repeat_test in `seq 1  10`; do
+			# Testcase to validate CPU consolidation for
+			# for sched_mc & sched_smt with stress=50%
+			if cpu_consolidation.py -c $sched_mc -t $sched_smt \
+				-w $work_load ; then
+				: $(( sched_mc_smt_pass_cnt += 1 ))
+			fi
+		done
+		analyze_package_consolidation_result $sched_mc \
+			$sched_mc_smt_pass_cnt $sched_smt; RC=$?
+	done
+done
+if [ $RC -eq 0 ]; then
+	tst_resm TPASS "CPU consolidation test for sched_mc &" \
+		"sched_smt with stress=50%"
+else
+	tst_resm TFAIL "CPU consolidation test for sched_mc &" \
+		"sched_smt with stress=50%"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests_exclusive02.sh b/testcases/kernel/power_management/runpwtests_exclusive02.sh
new file mode 100755
index 0000000..61f10e1
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests_exclusive02.sh
@@ -0,0 +1,82 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management_exclusive02"
+export TST_TOTAL=1
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+tst_kvercmp 2 6 29; rc=$?
+if [ $rc -eq 2 ] ; then
+	max_sched_smt=2
+else
+	max_sched_smt=1
+fi
+
+is_hyper_threaded; hyper_threaded=$?
+is_multi_socket; multi_socket=$?
+is_multi_core; multi_core=$?
+if [ $hyper_threaded -ne 0 -o $multi_socket -ne 0 \
+	-o $multi_core -eq 0 ]; then
+	tst_brkm TCONF "System is a multi core but not multi" \
+		"socket & hyper-threaded"
+fi
+
+#Testcase to validate consolidation at core level
+RC=0
+for sched_smt in `seq 0 $max_sched_smt`; do
+	if [ $sched_smt -eq 2 ]; then
+		work_load="kernbench"
+	else
+		work_load="ebizzy"
+	fi
+	sched_smt_pass_cnt=0
+	stress="thread"
+	for repeat_test in `seq 1  10`; do
+		if cpu_consolidation.py -t $sched_smt -w $work_load \
+			-s $stress; then
+			: $(( sched_smt_pass_cnt += 1 ))
+		fi
+	done
+	analyze_core_consolidation_result $sched_smt \
+		$sched_smt_pass_cnt; RC=$?
+done
+if [ $RC -eq 0 ]; then
+    tst_resm TPASS "Consolidation test at core level for sched_smt"
+else
+    tst_resm TFAIL "Consolidation test at core level for sched_smt"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests_exclusive03.sh b/testcases/kernel/power_management/runpwtests_exclusive03.sh
new file mode 100755
index 0000000..c85312b
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests_exclusive03.sh
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management_exclusive03"
+export TST_TOTAL=2
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+tst_kvercmp 2 6 29; rc=$?
+if [ $rc -eq 2 ] ; then
+	max_sched_mc=2
+	max_sched_smt=2
+else
+	max_sched_mc=1
+	max_sched_smt=1
+fi
+
+is_hyper_threaded; hyper_threaded=$?
+is_multi_socket; multi_socket=$?
+is_multi_core; multi_core=$?
+if [ $multi_socket -ne 0 -o $multi_core -ne 0 -o \
+	$hyper_threaded -ne 0 ]; then
+	tst_brkm TCONF "System is not a multi socket & multi core" \
+		"& hyper-threaded"
+fi
+
+# Verify threads consolidation stops when sched_mc &(/) sched_smt
+# is disabled.
+# Vary sched_mc from 1/2 to 0 when workload is running and
+# ensure that tasks do not consolidate to single package when
+# sched_mc is set to 0.
+RC=0
+for sched_mc in `seq 1  $max_sched_mc`; do
+	if cpu_consolidation.py -v -c $sched_mc; then
+		echo "Test PASS: CPU consolidation test by varying" \
+			"sched_mc $sched_mc to 0"
+	else
+		RC=1
+		echo "Test FAIL: CPU consolidation test by varying" \
+			"sched_mc $sched_mc to 0"
+	fi
+done
+if [ $RC -eq 0 ]; then
+	tst_resm TPASS "CPU consolidation test by varying sched_mc"
+else
+	tst_resm TFAIL "CPU consolidation test by varying sched_mc"
+fi
+
+# Vary sched_mc & sched_smt from 1 to 0 & 2 to 0 when workload
+# is running and ensure that tasks do not consolidate to single
+# package when sched_mc is set to 0.
+RC=0
+for sched_mc in `seq 1  $max_sched_mc`; do
+	for sched_smt in `seq 1  $max_sched_smt`; do
+		if [ $sched_smt -eq $sched_mc ]; then
+			if cpu_consolidation.py -v -c $sched_mc \
+				-t $sched_smt; then
+				echo "Test PASS: CPU consolidation test by" \
+					"varying sched_mc & sched_smt from" \
+					"$sched_mc to 0"
+			else
+				RC=1
+				echo "Test FAIL: CPU consolidation test by" \
+					"varying sched_mc & sched_smt from" \
+					"$sched_mc to 0"
+			fi
+		fi
+	done
+done
+if [ $RC -eq 0 ]; then
+	tst_resm TPASS "CPU consolidation test by varying" \
+		"sched_mc & sched_smt"
+else
+	tst_resm TFAIL "CPU consolidation test by varying" \
+		"sched_mc & sched_smt"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests_exclusive04.sh b/testcases/kernel/power_management/runpwtests_exclusive04.sh
new file mode 100755
index 0000000..6bb27f8
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests_exclusive04.sh
@@ -0,0 +1,67 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management_exclusive04"
+export TST_TOTAL=2
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+is_hyper_threaded; hyper_threaded=$?
+is_multi_socket; multi_socket=$?
+if [ $hyper_threaded -ne 0 -o $multi_socket -ne 0 ]; then
+	tst_brkm TCONF "System is not a multi socket & hyper-threaded"
+fi
+
+# Verify threads consolidation stops when sched_smt is
+# disabled in HT systems.
+# Vary only sched_smt from 1 to 0 when workload is running
+# and ensure that tasks do not consolidate to single core
+# when sched_smt is set to 0.
+if cpu_consolidation.py -v -t 1; then
+	tst_resm TPASS "CPU consolidation test by varying sched_smt from 1 to 0"
+else
+	tst_resm TFAIL "CPU consolidation test by varying sched_smt from 1 to 0"
+fi
+
+# Vary only sched_smt from 2 to 0 when workload is running
+# and ensure that tasks do not consolidate to single core
+# when sched_smt is set to 0.
+if cpu_consolidation.py -v -t 2; then
+	tst_resm TPASS "CPU consolidation test by varying sched_smt from 2 to 0"
+else
+	tst_resm TFAIL "CPU consolidation test by varying sched_smt from 2 to 0"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests_exclusive05.sh b/testcases/kernel/power_management/runpwtests_exclusive05.sh
new file mode 100755
index 0000000..f916c92
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests_exclusive05.sh
@@ -0,0 +1,112 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines  Corp., 2001
+# Author: Nageswara R Sastry <nasastry@in.ibm.com>
+#
+# This program is free software;  you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management_exclusive05"
+export TST_TOTAL=2
+
+. test.sh
+. pm_include.sh
+
+# Checking required kernel version and architecture
+tst_kvercmp 2 6 21; rc=$?
+if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+	tst_brkm TCONF "Kernel version not supported; not running testcases"
+else
+	case "$(uname -m)" in
+	i[4-6]86|x86_64)
+		;;
+	*)
+		tst_brkm TCONF "Arch not supported; not running testcases"
+		;;
+	esac
+fi
+
+tst_kvercmp 2 6 29; rc=$?
+if [ $rc -eq 2 ] ; then
+	max_sched_mc=2
+	max_sched_smt=2
+else
+	max_sched_mc=1
+	max_sched_smt=1
+fi
+
+is_hyper_threaded; hyper_threaded=$?
+is_multi_socket; multi_socket=$?
+is_multi_core; multi_core=$?
+if [ $multi_socket -ne 0 -o $multi_core -ne 0 -o \
+	$hyper_threaded -ne 0 ]; then
+	tst_brkm TCONF "System is not a multi socket & multi core" \
+		"& hyper-threaded"
+fi
+
+# Verify ILB runs in same package as workload.
+RC=0
+for sched_mc in `seq 1 $max_sched_mc`; do
+	if [ $sched_mc -eq 2 ]; then
+		work_load="kernbench"
+	else
+		work_load="ebizzy"
+	fi
+
+	ilb_test.py -c $sched_mc -w $work_load
+	if [ $? -eq 0 ]; then
+		echo "Test PASS: ILB & workload in same package for" \
+			"sched_mc=$sched_mc"
+	else
+		RC=1
+		echo "Test FAIL: ILB & workload did not run in same package" \
+			"for sched_mc=$sched_mc. Ensure CONFIG_NO_HZ is set"
+	fi
+done
+if [ $RC -eq 0 ]; then
+	tst_resm TPASS "ILB & workload test in same package for sched_mc"
+else
+	tst_resm TFAIL "ILB & workload test in same package for sched_mc"
+fi
+
+RC=0
+for sched_mc in `seq 1 $max_sched_mc`; do
+	if [ $sched_mc -eq 2 ]; then
+		work_load="kernbench"
+	else
+		work_load="ebizzy"
+	fi
+	for sched_smt in `seq 1 $max_sched_smt`; do
+		ilb_test.py -c $sched_mc -t sched_smt -w $work_load
+		if [ $? -eq 0 ]; then
+			echo "Test PASS: ILB & workload in same package for" \
+				"sched_mc=$sched_mc & sched_smt=$sched_smt"
+		else
+			RC=1
+			echo "Test FAIL: ILB & workload did not execute in" \
+				"same package for sched_mc=$sched_mc &" \
+				"sched_smt=$sched_smt. Ensure CONFIG_NO_HZ is set"
+		fi
+	done
+done
+if [ $RC -eq 0 ]; then
+	tst_resm TPASS "ILB & workload test in same package for" \
+		"sched_mc & sched_smt"
+else
+	tst_resm TFAIL "ILB & workload test in same package for" \
+		"sched_mc & sched_smt"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/sched_domain.py b/testcases/kernel/power_management/sched_domain.py
index 3d19ac0..1ff38b1 100755
--- a/testcases/kernel/power_management/sched_domain.py
+++ b/testcases/kernel/power_management/sched_domain.py
@@ -5,8 +5,6 @@
 
 import os
 import sys
-LIB_DIR = "%s/lib" % os.path.dirname(__file__)
-sys.path.append(LIB_DIR)
 from sched_mc import *
 from optparse import OptionParser
 
-- 
1.9.3


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [LTP] [PATCH] power_management: add it into default
  2014-12-12  9:51 [LTP] [PATCH] power_management: add it into default Xing Gu
@ 2015-01-20  7:15 ` gux.fnst
  2015-01-28 15:32 ` Cyril Hrubis
  1 sibling, 0 replies; 3+ messages in thread
From: gux.fnst @ 2015-01-20  7:15 UTC (permalink / raw)
  To: ltp-list

Ping. Thanks!

Regards,
Xing Gu

On 12/12/2014 05:51 PM, Xing Gu wrote:
> * Modify Makefile.
>
> * Split runpwtests.sh into separate testcases,
>    eg. runpwtests01.sh.
>
> * Use functions in test.sh, eg. tst_brkm.
>
> * Fix error of change_govr.sh, change_freq.sh, etc.
>
> * Since I don't have suitable machines and can't test
>    some testcases' correctness, currently these cases
>    are disabled.
>
> Signed-off-by: Xing Gu <gux.fnst@cn.fujitsu.com>
> ---
>   configure.ac                                       |  14 -
>   include/mk/features.mk.default                     |   7 -
>   include/mk/features.mk.in                          |   7 -
>   runtest/Makefile                                   |   4 -
>   runtest/power_management_tests                     |   8 +-
>   runtest/power_management_tests_exclusive           |  13 +-
>   scenario_groups/default                            |   1 +
>   testcases/kernel/Makefile                          |   6 +-
>   testcases/kernel/power_management/Makefile         |  10 +-
>   testcases/kernel/power_management/change_freq.sh   |   2 +-
>   testcases/kernel/power_management/change_govr.sh   |   2 +-
>   .../power_management/check_cpufreq_sysfs_files.sh  |   2 +-
>   .../kernel/power_management/cpu_consolidation.py   |   6 +-
>   testcases/kernel/power_management/ilb_test.py      |   2 -
>   testcases/kernel/power_management/lib/Makefile     |  25 ++
>   testcases/kernel/power_management/lib/sched_mc.py  |  50 ++-
>   testcases/kernel/power_management/pm_include.sh    | 121 ++++---
>   testcases/kernel/power_management/runpwtests.sh    | 380 ---------------------
>   testcases/kernel/power_management/runpwtests01.sh  |  60 ++++
>   testcases/kernel/power_management/runpwtests02.sh  |  58 ++++
>   testcases/kernel/power_management/runpwtests03.sh  |  75 ++++
>   testcases/kernel/power_management/runpwtests04.sh  |  48 +++
>   testcases/kernel/power_management/runpwtests05.sh  |  93 +++++
>   testcases/kernel/power_management/runpwtests06.sh  |  62 ++++
>   .../power_management/runpwtests_exclusive01.sh     | 112 ++++++
>   .../power_management/runpwtests_exclusive02.sh     |  82 +++++
>   .../power_management/runpwtests_exclusive03.sh     | 110 ++++++
>   .../power_management/runpwtests_exclusive04.sh     |  67 ++++
>   .../power_management/runpwtests_exclusive05.sh     | 112 ++++++
>   testcases/kernel/power_management/sched_domain.py  |   2 -
>   30 files changed, 1034 insertions(+), 507 deletions(-)
>   create mode 100644 testcases/kernel/power_management/lib/Makefile
>   delete mode 100755 testcases/kernel/power_management/runpwtests.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests01.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests02.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests03.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests04.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests05.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests06.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests_exclusive01.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests_exclusive02.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests_exclusive03.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests_exclusive04.sh
>   create mode 100755 testcases/kernel/power_management/runpwtests_exclusive05.sh
>
> diff --git a/configure.ac b/configure.ac
> index 794059c..0ca21a6 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -102,20 +102,6 @@ fi
>
>   # Testsuites knobs
>
> -# testcases/kernel/power_management requires python.
> -if test "x$with_python" = xyes; then
> -    AC_ARG_WITH([power-management-testsuite],
> -      [AC_HELP_STRING([--with-power-management-testsuite],
> -        [compile and install the x86 power management testsuite (default=no)])],
> -      [with_power_management_testsuite=yes],
> -    )
> -fi
> -if test "x$with_power_management_testsuite" = xyes; then
> -    AC_SUBST([WITH_POWER_MANAGEMENT_TESTSUITE],["yes"])
> -else
> -    AC_SUBST([WITH_POWER_MANAGEMENT_TESTSUITE],["no"])
> -fi
> -
>   AC_ARG_WITH([open-posix-testsuite],
>     [AC_HELP_STRING([--with-open-posix-testsuite],
>       [compile and install the open posix testsuite (default=no)])],
> diff --git a/include/mk/features.mk.default b/include/mk/features.mk.default
> index c9edc1c..69425ca 100644
> --- a/include/mk/features.mk.default
> +++ b/include/mk/features.mk.default
> @@ -34,13 +34,6 @@ HAVE_SECUREBITS			:= no
>
>   # Test suite knobs
>
> -# Enable testcases/kernel/power_management's compile and install?
> -ifeq ($(UCLINUX),1)
> -WITH_POWER_MANAGEMENT_TESTSUITE	:= no
> -else
> -WITH_POWER_MANAGEMENT_TESTSUITE	:=
> -endif
> -
>   # Enable testcases/open_posix_testsuite's compile and install?
>   WITH_OPEN_POSIX_TESTSUITE	:= no
>
> diff --git a/include/mk/features.mk.in b/include/mk/features.mk.in
> index 1fd28f8..49471fd 100644
> --- a/include/mk/features.mk.in
> +++ b/include/mk/features.mk.in
> @@ -34,13 +34,6 @@ HAVE_SECUREBITS			:= @HAVE_SECUREBITS@
>
>   # Test suite knobs
>
> -# Enable testcases/kernel/power_management's compile and install?
> -ifeq ($(UCLINUX),1)
> -WITH_POWER_MANAGEMENT_TESTSUITE	:= no
> -else
> -WITH_POWER_MANAGEMENT_TESTSUITE	:= @WITH_POWER_MANAGEMENT_TESTSUITE@
> -endif
> -
>   # Enable testcases/open_posix_testsuite's compile and install?
>   WITH_OPEN_POSIX_TESTSUITE	:= @WITH_OPEN_POSIX_TESTSUITE@
>
> diff --git a/runtest/Makefile b/runtest/Makefile
> index 8702559..0907ef6 100644
> --- a/runtest/Makefile
> +++ b/runtest/Makefile
> @@ -32,10 +32,6 @@ UNWANTED_FILES		:= Makefile CVS STAX
>
>   INSTALL_MODE		:= 00644
>
> -ifneq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes)
> -UNWANTED_FILES		+= power_management_tests
> -endif
> -
>   INSTALL_TARGETS		:= $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(wildcard $(abs_srcdir)/*))))
>
>   MAKE_TARGETS		:=
> diff --git a/runtest/power_management_tests b/runtest/power_management_tests
> index 5aa18bf..884e615 100644
> --- a/runtest/power_management_tests
> +++ b/runtest/power_management_tests
> @@ -1 +1,7 @@
> -POWER_MANAGEMENT runpwtests.sh
> +#POWER_MANAGEMENT
> +runpwtests01 runpwtests01.sh
> +runpwtests02 runpwtests02.sh
> +runpwtests03 runpwtests03.sh
> +runpwtests04 runpwtests04.sh
> +#runpwtests05 runpwtests05.sh
> +runpwtests06 runpwtests06.sh
> diff --git a/runtest/power_management_tests_exclusive b/runtest/power_management_tests_exclusive
> index a1692df..26176e2 100644
> --- a/runtest/power_management_tests_exclusive
> +++ b/runtest/power_management_tests_exclusive
> @@ -1 +1,12 @@
> -POWER_MANAGEMENT runpwtests.sh -exclusive
> +#POWER_MANAGEMENT exclusive
> +runpwtests01 runpwtests01.sh
> +runpwtests02 runpwtests02.sh
> +runpwtests03 runpwtests03.sh
> +runpwtests04 runpwtests04.sh
> +#runpwtests05 runpwtests05.sh
> +runpwtests06 runpwtests06.sh
> +#runpwtests_exclusive01 runpwtests_exclusive01.sh
> +#runpwtests_exclusive02 runpwtests_exclusive02.sh
> +#runpwtests_exclusive03 runpwtests_exclusive03.sh
> +#runpwtests_exclusive04 runpwtests_exclusive04.sh
> +#runpwtests_exclusive05 runpwtests_exclusive05.sh
> diff --git a/scenario_groups/default b/scenario_groups/default
> index 3a55702..0c2505f 100644
> --- a/scenario_groups/default
> +++ b/scenario_groups/default
> @@ -20,6 +20,7 @@ connectors
>   admin_tools
>   timers
>   power_management_tests
> +power_management_tests_exclusive
>   numa
>   hugetlb
>   commands
> diff --git a/testcases/kernel/Makefile b/testcases/kernel/Makefile
> index 50a12fa..689350b 100644
> --- a/testcases/kernel/Makefile
> +++ b/testcases/kernel/Makefile
> @@ -53,11 +53,7 @@ SUBDIRS			+= connectors \
>   			   timers \
>   			   tracing \
>   			   module \
> -
> -ifeq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes)
> -SUBDIRS			+= power_management
> -endif
> -
> +			   power_management
>   endif
>
>   MAKE_DEPS		:= include/linux_syscall_numbers.h
> diff --git a/testcases/kernel/power_management/Makefile b/testcases/kernel/power_management/Makefile
> index 24f75f8..bc189b9 100644
> --- a/testcases/kernel/power_management/Makefile
> +++ b/testcases/kernel/power_management/Makefile
> @@ -13,8 +13,8 @@
>   ## for more details.                                                          ##
>   ##                                                                            ##
>   ## You should have received a copy of the GNU General Public License          ##
> -## along with this program;  if not, write to the Free Software               ##
> -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
> +## along with this program;  if not, write to the Free Software Foundation,   ##
> +## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA           ##
>   ##                                                                            ##
>   ################################################################################
>
> @@ -22,10 +22,8 @@ top_srcdir		?= ../../..
>
>   include $(top_srcdir)/include/mk/testcases.mk
>
> -vpath %.c $(srcdir):$(top_srcdir)/lib
> -
> -INSTALL_TARGETS		:= lib/*.py *.py *.sh
> +INSTALL_TARGETS		:= *.py *.sh
>
>   MAKE_DEPS		+= $(APICMDS_DIR)/tst_kvercmp
>
> -include $(top_srcdir)/include/mk/generic_leaf_target.mk
> +include $(top_srcdir)/include/mk/generic_trunk_target.mk
> diff --git a/testcases/kernel/power_management/change_freq.sh b/testcases/kernel/power_management/change_freq.sh
> index 204e21f..3a971d2 100755
> --- a/testcases/kernel/power_management/change_freq.sh
> +++ b/testcases/kernel/power_management/change_freq.sh
> @@ -5,7 +5,7 @@ available_freq=$(get_supporting_freq)
>   available_govr=$(get_supporting_govr)
>   RC=0
>
> -total_cpus=$(no_of_cpus)
> +total_cpus=$(tst_ncpus)
>   (( total_cpus-=1 ))
>
>   if ( echo ${available_govr} | grep -i "userspace" 2>&1 >/dev/null ) ; then
> diff --git a/testcases/kernel/power_management/change_govr.sh b/testcases/kernel/power_management/change_govr.sh
> index 4c2546e..bfe6c5b 100755
> --- a/testcases/kernel/power_management/change_govr.sh
> +++ b/testcases/kernel/power_management/change_govr.sh
> @@ -3,7 +3,7 @@
>   . pm_include.sh
>   available_govr=$(get_supporting_govr)
>
> -total_cpus=$(no_of_cpus)
> +total_cpus=$(tst_ncpus)
>   (( total_cpus-=1 ))
>   RC=0
>
> diff --git a/testcases/kernel/power_management/check_cpufreq_sysfs_files.sh b/testcases/kernel/power_management/check_cpufreq_sysfs_files.sh
> index cb51aa0..dcf8a1d 100755
> --- a/testcases/kernel/power_management/check_cpufreq_sysfs_files.sh
> +++ b/testcases/kernel/power_management/check_cpufreq_sysfs_files.sh
> @@ -2,7 +2,7 @@
>
>   . pm_include.sh
>
> -total_cpus=$(no_of_cpus)
> +total_cpus=$(tst_ncpus)
>   (( total_cpus-=1 ))
>   RC=0
>
> diff --git a/testcases/kernel/power_management/cpu_consolidation.py b/testcases/kernel/power_management/cpu_consolidation.py
> index 992a745..b15bb9b 100755
> --- a/testcases/kernel/power_management/cpu_consolidation.py
> +++ b/testcases/kernel/power_management/cpu_consolidation.py
> @@ -6,8 +6,6 @@
>   import os
>   import sys
>   import time
> -LIB_DIR = "%s/lib" % os.path.dirname(__file__)
> -sys.path.append(LIB_DIR)
>   from optparse import OptionParser
>   from sched_mc import *
>
> @@ -80,6 +78,8 @@ def main(argv=None):
>
>               generate_report()
>               status = validate_cpu_consolidation("partial", work_ld, options.mc_value, options.smt_value)
> +            if background == "yes":
> +                stop_wkld(work_ld)
>               if status == 0:
>                   print "INFO: Consolidation worked sched_smt &(/) sched_mc is set"
>                   #Disable sched_smt & sched_mc interface values
> @@ -95,8 +95,10 @@ def main(argv=None):
>                       smt_value = 0
>
>                   if work_ld == "kernbench":
> +                    trigger_kernbench (smt_value, "partial", background, pinned, "no")
>                       time.sleep(240)
>                   else:
> +                    trigger_ebizzy (smt_value, "partial", duration, background, pinned)
>                       time.sleep(120)
>
>                   generate_report()
> diff --git a/testcases/kernel/power_management/ilb_test.py b/testcases/kernel/power_management/ilb_test.py
> index cec0b29..ec990bc 100755
> --- a/testcases/kernel/power_management/ilb_test.py
> +++ b/testcases/kernel/power_management/ilb_test.py
> @@ -5,8 +5,6 @@
>
>   import os
>   import sys
> -LIB_DIR = "%s/lib" % os.path.dirname(__file__)
> -sys.path.append(LIB_DIR)
>   from optparse import OptionParser
>   from sched_mc import *
>
> diff --git a/testcases/kernel/power_management/lib/Makefile b/testcases/kernel/power_management/lib/Makefile
> new file mode 100644
> index 0000000..cf7f079
> --- /dev/null
> +++ b/testcases/kernel/power_management/lib/Makefile
> @@ -0,0 +1,25 @@
> +#
> +# Copyright (c) 2014 Fujitsu Ltd.
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License along
> +# with this program; if not, write to the Free Software Foundation, Inc.,
> +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> +#
> +
> +top_srcdir                      ?= ../../../..
> +
> +include $(top_srcdir)/include/mk/env_pre.mk
> +
> +INSTALL_TARGETS		:= *.py
> +
> +include $(top_srcdir)/include/mk/generic_leaf_target.mk
> diff --git a/testcases/kernel/power_management/lib/sched_mc.py b/testcases/kernel/power_management/lib/sched_mc.py
> index cb78b55..1687f6f 100755
> --- a/testcases/kernel/power_management/lib/sched_mc.py
> +++ b/testcases/kernel/power_management/lib/sched_mc.py
> @@ -319,25 +319,17 @@ def trigger_ebizzy (sched_smt, stress, duration, background, pinned):
>       try:
>           threads = get_job_count(stress, "ebizzy", sched_smt)
>           olddir = os.getcwd()
> -        path = '%s/utils/benchmark' % os.environ['LTPROOT']
> +        path = '%s/testcases/bin' % os.environ['LTPROOT']
>           os.chdir(path)
> -        wklds_avlbl = list()
> -        workload = "ebizzy"
> -        workload_dir = ""
> -
> -        # Use the latest version of similar workload available
> +        workload_file = ""
>           for file_name in os.listdir('.'):
> -            if file_name.find(workload) != -1:
> -                wklds_avlbl.append(file_name)
> -
> -        wklds_avlbl.sort()
> -        workload_dir = wklds_avlbl[len(wklds_avlbl)-1]
> -        if workload_dir != "":
> -            new_path = os.path.join(path,"%s" % workload_dir)
> +            if file_name == "ebizzy":
> +                workload_file = file_name
> +                break
> +        if workload_file != "":
>               get_proc_data(stats_start)
>               get_proc_loc_count(intr_start)
>               try:
> -                os.chdir(new_path)
>                   if background == "yes":
>                       succ = os.system('./ebizzy -t%s -s4096 -S %s >/dev/null &'
>                           % (threads, duration))
> @@ -356,13 +348,16 @@ def trigger_ebizzy (sched_smt, stress, duration, background, pinned):
>                       #in background
>                       #get_proc_loc_count(intr_stop)
>                       #get_proc_data(stats_stop)
> -		else:
> +                else:
>                       print "INFO: ebizzy workload triggerd failed"
>                       os.chdir(olddir)
>                       sys.exit(1)
>               except Exception, details:
>                   print "Ebizzy workload trigger failed ", details
>                   sys.exit(1)
> +        else:
> +            print "INFO: ebizzy benchmark not found"
> +            sys.exit(1)
>       except Exception, details:
>           print "Ebizzy workload trigger failed ", details
>           sys.exit(1)
> @@ -378,21 +373,18 @@ def trigger_kernbench (sched_smt, stress, background, pinned, perf_test):
>
>           dst_path = "/root"
>           olddir = os.getcwd()
> -        path = '%s/utils/benchmark' % os.environ['LTPROOT']
> +        path = '%s/testcases/bin' % os.environ['LTPROOT']
>           os.chdir(path)
> -        wklds_avlbl = list()
> +        workload_file = ""
>           for file_name in os.listdir('.'):
> -            if file_name.find("kernbench") != -1:
> -                wklds_avlbl.append(file_name)
> -        if len(wklds_avlbl):
> -            wklds_avlbl.sort()
> -            workload_dir = wklds_avlbl[len(wklds_avlbl)-1]
> -            if workload_dir != "":
> -                benchmark_path = os.path.join(path,"%s" % workload_dir)
> -            else:
> -                print "INFO: kernbench benchmark not found"
> -                sys.exit(1)
> -        os.chdir(olddir)
> +            if file_name == "kernbench":
> +                workload_file = file_name
> +                break
> +        if workload_file != "":
> +            benchmark_path = path
> +        else:
> +            print "INFO: kernbench benchmark not found"
> +            sys.exit(1)
>
>           os.chdir(dst_path)
>           linux_source_dir=""
> @@ -405,7 +397,7 @@ def trigger_kernbench (sched_smt, stress, background, pinned, perf_test):
>           else:
>               print "INFO: Linux kernel source not found in /root. Workload\
>                  Kernbench cannot be executed"
> -	    sys.exit(1)
> +            sys.exit(1)
>
>           get_proc_data(stats_start)
>           get_proc_loc_count(intr_start)
> diff --git a/testcases/kernel/power_management/pm_include.sh b/testcases/kernel/power_management/pm_include.sh
> index b1867e6..70ea4d2 100755
> --- a/testcases/kernel/power_management/pm_include.sh
> +++ b/testcases/kernel/power_management/pm_include.sh
> @@ -30,7 +30,8 @@ get_topology() {
>   	for cpu in $(seq 0 "${total_cpus}" )
>   	do
>   		cpus[$cpu]=cpu${cpu}
> -		phyid[$cpu]=$(cat /sys/devices/system/cpu/cpu${cpu}/topology/physical_package_id)
> +		phyid[$cpu]=$(cat \
> +		/sys/devices/system/cpu/cpu${cpu}/topology/physical_package_id)
>   	done
>   	j=0
>   	while [ "${j}" -lt "${total_cpus}" ]
> @@ -50,18 +51,22 @@ check_cpufreq() {
>   	for cpu in $(seq 0 "${total_cpus}" )
>   	do
>   		if [ ! -d /sys/devices/system/cpu/cpu${cpu}/cpufreq ] ; then
> -			echo "NOSUPPORT: cpufreq support not found please check Kernel configuration or BIOS settings"
> +			echo "NOSUPPORT: cpufreq support not" \
> +				"found please check Kernel configuration" \
> +				"or BIOS settings"
>   			exit $NOSUPPORT
>   		fi
>   	done
>   }
>
>   get_supporting_freq() {
> -	cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies | uniq
> +	cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies \
> +		| uniq
>   }
>
>   get_supporting_govr() {
> -	cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors | uniq
> +	cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors \
> +		| uniq
>   }
>
>   is_hyper_threaded() {
> @@ -102,7 +107,9 @@ check_input() {
>   }
>
>   is_multi_socket() {
> -	no_of_sockets=`cat /sys/devices/system/cpu/cpu?/topology/physical_package_id | uniq | wc -l`
> +	no_of_sockets=`cat \
> +		/sys/devices/system/cpu/cpu?/topology/physical_package_id \
> +		| uniq | wc -l`
>   	[ $no_of_sockets -gt 1 ] ; return $?
>   }
>
> @@ -119,7 +126,8 @@ is_multi_core() {
>
>   is_dual_core() {
>   	siblings=`cat /proc/cpuinfo | grep siblings | uniq | cut -f2 -d':'`
> -        cpu_cores=`cat /proc/cpuinfo | grep "cpu cores" | uniq | cut -f2 -d':'`
> +        cpu_cores=`cat /proc/cpuinfo | grep "cpu cores" | uniq \
> +			| cut -f2 -d':'`
>           if [ $siblings -eq $cpu_cores ]; then
>                   [ $cpu_cores -eq 2 ]; return $?
>           else
> @@ -130,7 +138,8 @@ is_dual_core() {
>
>   get_kernel_version() {
>   	# Get kernel minor version
> -	export kernel_version=`uname -r | awk -F. '{print $1"."$2"."$3}' | cut -f1 -d'-'`
> +	export kernel_version=`uname -r | awk -F. '{print $1"."$2"."$3}' \
> +		| cut -f1 -d'-'`
>   }
>
>   get_valid_input() {
> @@ -146,42 +155,46 @@ analyze_result_hyperthreaded() {
>   	sched_mc=$1
>       pass_count=$2
>       sched_smt=$3
> +	PASS="Test PASS"
> +	FAIL="Test FAIL"
>
> +	RC=0
>   	case "$sched_mc" in
>   	0)
>   		case "$sched_smt" in
>   		0)
>   			if [ $pass_count -lt 5 ]; then
> -				tst_resm TPASS "cpu consolidation failed for sched_mc=\
> -$sched_mc & sched_smt=$sched_smt"
> +				echo "${PASS}: cpu consolidation failed for" \
> +					"sched_mc=$sched_mc & sched_smt=$sched_smt"
>   			else
>   				RC=1
> -				tst_resm TFAIL "cpu consolidation passed for sched_mc=\
> -$sched_mc & sched_smt=$sched_smt"
> +				echo "${FAIL}: cpu consolidation passed for" \
> +					"sched_mc=$sched_mc & sched_smt=$sched_smt"
>   			fi
>   			;;
>   		*)
>   			if [ $pass_count -lt 5 ]; then
> -               	tst_resm TFAIL "cpu consolidation for sched_mc=\
> -$sched_mc & sched_smt=$sched_smt"
> -           	else
>   				RC=1
> -				tst_resm TPASS "cpu consolidation for sched_mc=\
> -$sched_mc & sched_smt=$sched_smt"
> +				echo "${FAIL}: cpu consolidation for" \
> +					"sched_mc=$sched_mc & sched_smt=$sched_smt"
> +			else
> +				echo "${PASS}: cpu consolidation for" \
> +					"sched_mc=$sched_mc & sched_smt=$sched_smt"
>   			fi
>   			;;
>   		esac ;;
>   	*)
>   		if [ $pass_count -lt 5 ]; then
> -			tst_resm TFAIL "cpu consolidation for sched_mc=\
> -$sched_mc & sched_smt=$sched_smt"
> -		else
>   			RC=1
> -			tst_resm TPASS "cpu consolidation for sched_mc=\
> -$sched_mc & sched_smt=$sched_smt"
> +			echo "${FAIL}: cpu consolidation for" \
> +				"sched_mc=$sched_mc & sched_smt=$sched_smt"
> +		else
> +			echo "${PASS}: cpu consolidation for" \
> +				"sched_mc=$sched_mc & sched_smt=$sched_smt"
>   		fi
>   		;;
>   	esac
> +	return $RC
>   }
>
>   analyze_package_consolidation_result() {
> @@ -195,84 +208,104 @@ analyze_package_consolidation_result() {
>   		sched_smt=-1
>   	fi
>
> +	PASS="Test PASS"
> +	FAIL="Test FAIL"
> +
> +	RC=0
>   	if [ $hyper_threaded -eq $YES -a $sched_smt -gt -1 ]; then
>   		analyze_result_hyperthreaded $sched_mc $pass_count $sched_smt
>   	else
>   		case "$sched_mc" in
>   	    0)
>       	    if [ $pass_count -lt 5 ]; then
> -        	    tst_resm TPASS "cpu consolidation failed for sched_mc=\
> -$sched_mc"
> +				echo "${PASS}: cpu consolidation failed for" \
> +					"sched_mc=$sched_mc"
>           	else
>   				RC=1
> -            	tst_resm TFAIL "cpu consolidation passed for sched_mc=\
> -$sched_mc"
> -        	fi ;;
> +				echo "${FAIL}: cpu consolidation passed for" \
> +					"sched_mc=$sched_mc"
> +			fi
> +			;;
>       	*)
>   			if [ $pass_count -lt 5 ]; then
> -				tst_resm TFAIL "Consolidation at package level failed for \
> -sched_mc=$sched_mc"
> +				RC=1
> +				echo "${FAIL}: consolidation at package level" \
> +					"failed for sched_mc=$sched_mc"
>   			else
> -				tst_resm TPASS "Consolidation at package level passed for \
> -sched_mc=$sched_mc"
> +				echo "${PASS}: consolidation at package level" \
> +					"passed for sched_mc=$sched_mc"
>   			fi
>           	;;
>       	esac
>   	fi
> +	return $RC
>   }
>
>   analyze_core_consolidation_result() {
>   	sched_smt=$1
>   	pass_count=$2
> +	PASS="Test PASS"
> +	FAIL="Test FAIL"
>
> +	RC=0
>   	case "$sched_smt" in
>   	0)
>   		if [ $pass_count -lt 5 ]; then
> -			tst_resm TPASS "Consolidation at core level failed \
> -when sched_smt=$sched_smt"
> +			echo "${PASS}: consolidation at core level failed" \
> +				"when sched_smt=$sched_smt"
>   		else
> -			tst_resm TFAIL "Consolidation at core level passed for \
> -sched_smt=$sched_smt"
> +			RC=1
> +			echo "${FAIL}: consolidation at core level passed for" \
> +				"sched_smt=$sched_smt"
>   		fi ;;
>   	*)
>   		if [ $pass_count -lt 5 ]; then
>   			RC=1
> -			tst_resm TFAIL "Consolidation at core level failed for \
> -sched_smt=$sched_smt"
> +			echo "${FAIL}: consolidation at core level failed for" \
> +				"sched_smt=$sched_smt"
>   		else
> -			tst_resm TPASS "Consolidation at core level passed for \
> -sched_smt=$sched_smt"
> +			echo "${PASS}: consolidation at core level passed for" \
> +				"sched_smt=$sched_smt"
>   		fi ;;
>   	esac
> +	return $RC
>   }
>
>   analyze_sched_domain_result(){
>   	sched_mc=$1
>   	result=$2
>   	sched_smt=$3
> +	PASS="Test PASS"
> +	FAIL="Test FAIL"
>
> +	RC=0
>   	if [ $hyper_threaded -eq $YES ]; then
>   		if [ $sched_smt ]; then
>   			if [ "$result" = 0 ];then
> -				tst_resm TPASS "sched domain test for sched_mc=$sched_mc & sched_smt=$sched_smt"
> +				echo "${PASS}: sched domain test for" \
> +					"sched_mc=$sched_mc & sched_smt=$sched_smt"
>   			else
>   				RC=1
> -				tst_resm TFAIL "sched domain test sched_mc=$sched_mc & sched_smt=$sched_smt"
> +				echo "${FAIL}: sched domain test for" \
> +					"sched_mc=$sched_mc & sched_smt=$sched_smt"
>   			fi
>   		else
>   			if [ "$result" = 0 ];then
> -				tst_resm TPASS "sched domain test for sched_mc=$sched_mc"
> +				echo "${PASS}: sched domain test for" \
> +					"sched_mc=$sched_mc"
>   			else
>   				RC=1
> -				tst_resm TFAIL "sched domain test for sched_mc=$sched_mc"
> +				echo "${FAIL}: sched domain test for" \
> +					"sched_mc=$sched_mc"
>   			fi
>   		fi
>   	else
>   		if [ "$result" = 0 ];then
> -			tst_resm TPASS "sched domain test for sched_mc=$sched_mc"
> +			echo "${PASS}: sched domain test for sched_mc=$sched_mc"
>   		else
>   			RC=1
> -			tst_resm TFAIL "sched domain test sched_mc=$sched_mc"
> +			echo "${FAIL}: sched domain test for sched_mc=$sched_mc"
>   		fi
>   	fi
> +	return $RC
>   }
> diff --git a/testcases/kernel/power_management/runpwtests.sh b/testcases/kernel/power_management/runpwtests.sh
> deleted file mode 100755
> index 9055964..0000000
> --- a/testcases/kernel/power_management/runpwtests.sh
> +++ /dev/null
> @@ -1,380 +0,0 @@
> -#! /bin/sh
> -################################################################################
> -##                                                                            ##
> -## Copyright (c) International Business Machines  Corp., 2001                 ##
> -##                                                                            ##
> -## This program is free software;  you can redistribute it and#or modify      ##
> -## it under the terms of the GNU General Public License as published by       ##
> -## the Free Software Foundation; either version 2 of the License, or          ##
> -## (at your option) any later version.                                        ##
> -##                                                                            ##
> -## This program is distributed in the hope that it will be useful, but        ##
> -## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
> -## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
> -## for more details.                                                          ##
> -##                                                                            ##
> -## You should have received a copy of the GNU General Public License          ##
> -## along with this program;  if not, write to the Free Software               ##
> -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
> -##                                                                            ##
> -################################################################################
> -#
> -# File :        runpwtests.sh
> -#
> -# Description:
> -#
> -# Author:       Nageswara R Sastry <nasastry@in.ibm.com>
> -#
> -# History:      26 Aug 2008 - Created this file
> -# 03 Nov 2008 - Added CPUIDLE sysfs testcase
> -#
> -
> -# Exporting Required variables
> -export TST_TOTAL=1
> -#LTPTMP=${TMP}
> -export PATH=${PATH}:.
> -export TCID="Power_Management"
> -export TST_COUNT=0
> -export contacts="mpnayak@linux.vnet.ibm.com"
> -export analysis="/proctstat"
> -
> -YES=0
> -NO=1
> -#List of reusable functions defined in pm_include.sh
> -. pm_include.sh
> -
> -# Function:     main
> -#
> -# Description:  - Execute all tests, exit with test status.
> -#
> -# Exit:         - zero on success
> -#               - non-zero on failure.
> -#
> -RC=0		#Return status
> -
> -# Checking required kernel version and architecture
> -tst_kvercmp 2 6 21; rc=$?
> -if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> -	tst_resm TCONF "Kernel version not supported; not running testcases"
> -	exit 0
> -else
> -	case "$(uname -m)" in
> -	i[4-6]86|x86_64)
> -		;;
> -	*)
> -		tst_resm TCONF "Arch not supported; not running testcases"
> -		exit 0
> -		;;
> -	esac
> -fi
> -
> -tst_kvercmp 2 6 29; rc=$?
> -if [ $rc -eq 2 ] ; then
> -	max_sched_mc=2
> -	max_sched_smt=2
> -else
> -	max_sched_mc=1
> -	max_sched_smt=1
> -fi
> -
> -tst_kvercmp 2 6 31; rc=$?
> -if [ $rc -eq 1 -o $rc -eq 2 ] ; then
> -	timer_migr_support_compatible=1
> -else
> -	timer_migr_support_compatible=0
> -fi
> -
> -is_hyper_threaded; hyper_threaded=$?
> -is_multi_socket; multi_socket=$?
> -is_multi_core; multi_core=$?
> -is_dual_core; dual_core=$?
> -
> -#Checking sched_mc sysfs interface
> -#check_config.sh config_sched_mc || RC=$?
> -TST_COUNT=1
> -if [ $multi_socket -eq $YES -a $multi_core -eq $YES ] ; then
> -	if [ -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
> -		if test_sched_mc.sh ; then
> -			tst_resm TPASS "SCHED_MC sysfs tests"
> -		else
> -			RC=$?
> -			tst_resm TFAIL "SCHED_MC sysfs tests"
> -		fi
> -	else
> -    	tst_resm TCONF "Required kernel configuration for SCHED_MC NOT set"
> -	fi
> -else
> -	if [ -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
> -		tst_resm TFAIL "sched_mc_power_savings interface in system which is not a multi socket &(/) multi core"
> -	else
> -		tst_resm TCONF "Not a suitable architecture for SCHED_MC test"
> -	fi
> -fi
> -
> -# Test sched_smt_power_savings interface on HT machines
> -: $(( TST_COUNT += 1 ))
> -if [ $hyper_threaded -eq $YES ]; then
> -	if [ -f /sys/devices/system/cpu/sched_smt_power_savings ] ; then
> -    	if test_sched_smt.sh; then
> -			tst_resm TPASS "SCHED_SMT sysfs test"
> -		else
> -			RC=$?
> -        	tst_resm TFAIL "SCHED_SMT sysfs test"
> -    	fi
> -	else
> -		RC=$?
> -		tst_resm TFAIL "Required kernel configuration for SCHED_SMT NOT set"
> -	fi
> -else
> -	if [ -f /sys/devices/system/cpu/sched_smt_power_savings ] ; then
> -		RC=$?
> -        tst_resm TFAIL "sched_smt_power_saving interface in system not hyper-threaded"
> -    else
> -        tst_resm TCONF "Required Hyper Threading support for SCHED_SMT test"
> -    fi
> -fi
> -
> -# Checking cpufreq sysfs interface files
> -#check_config.sh config_cpu_freq || RC=$?
> -: $(( TST_COUNT += 1 ))
> -if [ -d /sys/devices/system/cpu/cpu0/cpufreq ] ; then
> -    if check_cpufreq_sysfs_files.sh; then
> -		tst_resm TPASS "CPUFREQ sysfs tests"
> -	else
> -		RC=$?
> -		tst_resm TFAIL "CPUFREQ sysfs tests "
> -	fi
> -
> -    # Changing governors
> -	: $(( TST_COUNT += 1 ))
> -	if change_govr.sh; then
> -		tst_resm TPASS "Changing governors "
> -	else
> -		RC=$?
> -		tst_resm TFAIL "Changing governors "
> -	fi
> -
> -    # Changing frequencies
> -	: $(( TST_COUNT += 1 ))
> -    if change_freq.sh ; then
> -		tst_resm TPASS "Changing frequncies "
> -	else
> -		RC=$?
> -        tst_resm TFAIL "Changing frequncies "
> -    fi
> -
> -    # Loading and Unloading governor related kernel modules
> -	: $(( TST_COUNT += 1 ))
> -    if pwkm_load_unload.sh ; then
> -		tst_resm TPASS "Loading and Unloading of governor kernel \
> -modules"
> -	else
> -		RC=$?
> -        tst_resm TFAIL "Loading and Unloading of governor kernel \
> -        modules got failed"
> -    fi
> -else
> -    tst_resm TCONF "Required kernel configuration for CPU_FREQ NOT set"
> -fi
> -
> -# Checking cpuidle sysfs interface files
> -: $(( TST_COUNT+=1))
> -if check_cpuidle_sysfs_files.sh ; then
> -	tst_resm TPASS "CPUIDLE sysfs tests passed"
> -else
> -	RC=$?
> -    tst_resm TFAIL "CPUIDLE sysfs tests failed"
> -fi
> -
> -# sched_domain test
> -if ! type python > /dev/null ; then
> -	tst_resm TCONF "Python is not installed, CPU Consolidation\
> -test cannot run"
> -elif ! grep sched_debug -qw /proc/cmdline ; then
> -	tst_resm TCONF "Kernel cmdline parameter 'sched_debug' needed,\
> -CPU Consolidation test cannot run"
> -else
> -	if [ -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
> -    		echo "max sched mc $max_sched_mc"
> -		for sched_mc in `seq 0 $max_sched_mc`; do
> -			: $(( TST_COUNT+=1))
> -			sched_domain.py -c $sched_mc; RC=$?
> -			analyze_sched_domain_result $sched_mc $RC
> -			if [ $hyper_threaded -eq $YES -a -f /sys/devices/system/cpu/sched_smt_power_savings ]; then
> -				get_sched_values sched_smt; max_sched_smt=$?
> -				for sched_smt in `seq 0 $max_sched_smt`; do
> -					# Testcase to validate sched_domain tree
> -					: $(( TST_COUNT+=1))
> -					sched_domain.py -c $sched_mc -t $sched_smt; RC=$?
> -					analyze_sched_domain_result $sched_mc $RC $sched_smt ;
> -				done
> -			fi
> -		done
> -	fi
> -fi
> -
> -: $(( TST_COUNT+=1))
> -if [ -f /proc/sys/kernel/timer_migration ]; then
> -	if [ $timer_migr_support_compatible -eq $YES ]; then
> -		if test_timer_migration.sh; then
> -        	tst_resm TPASS "Timer Migration interface test"
> -    	else
> -        	RC=$?
> -        	tst_resm TFAIL "Timer migration interface test"
> -		fi
> -	fi
> -else
> -	if [ $timer_migr_support_compatible -eq $YES ]; then
> -		RC=$?
> -		tst_resm TFAIL "Timer migration interface missing"
> -	else
> -		tst_resm TCONF "Kernel version does not support Timer migration"
> -	fi
> -fi
> -
> -if [ $# -gt 0 -a "$1" = "-exclusive" ]; then
> -	# Test CPU consolidation
> -	if [ $multi_socket -eq $YES -a $multi_core -eq $YES ]; then
> -		for sched_mc in `seq 0  $max_sched_mc`; do
> -			: $(( TST_COUNT += 1 ))
> -			sched_mc_pass_cnt=0
> -			if [ $sched_mc -eq 2 ]; then
> -				work_load="kernbench"
> -			else
> -				work_load="ebizzy"
> -			fi
> -			for repeat_test in `seq 1  10`; do
> -				#Testcase to validate CPU consolidation for sched_mc
> -				if cpu_consolidation.py -c $sched_mc -w $work_load ; then
> -					: $(( sched_mc_pass_cnt += 1 ))
> -				fi
> -			done
> -			analyze_package_consolidation_result $sched_mc $sched_mc_pass_cnt
> -
> -			if [ $hyper_threaded -eq $YES ]; then
> -				for sched_smt in `seq 0 $max_sched_smt`; do
> -					: $(( TST_COUNT += 1 ))
> -					sched_mc_smt_pass_cnt=0
> -					for repeat_test in `seq 1  10`; do
> -						# Testcase to validate CPU consolidation for
> -						# for sched_mc & sched_smt with stress=50%
> -						if cpu_consolidation.py -c $sched_mc -t $sched_smt -w $work_load; then
> -							: $(( sched_mc_smt_pass_cnt += 1 ))
> -						fi
> -					done
> -					analyze_package_consolidation_result $sched_mc $sched_mc_smt_pass_cnt $sched_smt
> -				done
> -			fi
> -		done
> -
> -	fi
> -
> -	if [ $hyper_threaded -eq $YES -a $multi_socket -eq $YES -a $multi_core -eq $NO ]; then
> -			#Testcase to validate consolidation at core level
> -			for sched_smt in `seq 0 $max_sched_smt`; do
> -				if [ $sched_smt -eq 2 ]; then
> -				 	work_load="kernbench"
> -				else
> -					work_load="ebizzy"
> -				fi
> -				sched_smt_pass_cnt=0
> -				: $(( TST_COUNT += 1 ))
> -				stress="thread"
> -				for repeat_test in `seq 1  10`; do
> -					if cpu_consolidation.py -t $sched_smt -w $work_load -s $stress; then
> -						: $(( sched_smt_pass_cnt += 1 ))
> -					fi
> -				done
> -				analyze_core_consolidation_result $sched_smt $sched_smt_pass_cnt
> -			done
> -	fi
> -
> -	# Verify threads consolidation stops when sched_mc &(/) sched_smt is disabled
> -    if [ $multi_socket -eq $YES -a $multi_core -eq $YES ]; then
> -        for sched_mc in `seq 1  $max_sched_mc`; do
> -			: $(( TST_COUNT += 1 ))
> -
> -			# Vary sched_mc from 1/2 to 0 when workload is running and ensure that
> -			# tasks do not consolidate to single package when sched_mc is set to 0
> -			if cpu_consolidation.py -v -c $sched_mc; then
> -            	tst_resm TPASS "CPU consolidation test by varying sched_mc $sched_mc to 0"
> -        	else
> -            	tst_resm TFAIL "CPU consolidation test by varying sched_mc $sched_mc to 0"
> -        	fi
> -
> -			if [ $hyper_threaded -eq $YES ]; then
> -				for sched_smt in `seq 1  $max_sched_smt`; do
> -					if [ $sched_smt -eq $sched_mc ]; then
> -						# Vary sched_mc & sched_smt from 1 to 0 & 2 to 0 when workload is running and ensure that
> -            			# tasks do not consolidate to single package when sched_mc is set to 0
> -            			: $(( TST_COUNT += 1 ))
> -						if cpu_consolidation.py -v -c $sched_mc -t $sched_smt; then
> -							tst_resm TPASS "CPU consolidation test by varying sched_mc \
> -& sched_smt from $sched_mc to 0"
> -						else
> -							tst_resm TFAIL "CPU consolidation test by varying sched_mc \
> -& sched_smt from $sched_mc to 0"
> -						fi
> -					fi
> -				done
> -			fi
> -		done
> -	fi
> -
> -    # Verify threads consolidation stops when sched_smt is disabled in HT systems
> -	if [ $hyper_threaded -eq $YES -a $multi_socket -eq $YES ]; then
> -		# Vary only sched_smt from 1 to 0 when workload is running and ensure that
> -		# tasks do not consolidate to single core when sched_smt is set to 0
> -		: $(( TST_COUNT += 1 ))
> -		if cpu_consolidation.py -v -t 1; then
> -			tst_resm TPASS "CPU consolidation test by varying sched_smt from 1 to 0"
> -		else
> -			tst_resm TFAIL "CPU consolidation test by varying sched_smt from 1 to 0"
> -		fi
> -
> -        # Vary only sched_smt from 2 to 0 when workload is running and ensure that
> -        # tasks do not consolidate to single core when sched_smt is set to 0
> -        : $(( TST_COUNT += 1 ))
> -        if cpu_consolidation.py -v -t 2; then
> -            tst_resm TPASS "CPU consolidation test by varying sched_smt 2 to 0"
> -        else
> -            tst_resm TFAIL "CPU consolidation test by varying sched_smt 2 to 0"
> -        fi
> -
> -	fi
> -
> -	# Verify ILB runs in same package as workload
> -    if [ $multi_socket -eq $YES -a $multi_core -eq $YES ]; then
> -		for sched_mc in `seq 1 $max_sched_mc`; do
> -			: $(( TST_COUNT += 1 ))
> -            if [ $sched_mc -eq 2 ]; then
> -                work_load="kernbench"
> -            else
> -                work_load="ebizzy"
> -            fi
> -
> -            ilb_test.py -c $sched_mc -w $work_load; RC=$?
> -			if [ $RC -eq 0 ]; then
> -				tst_resm TPASS "ILB & workload in same package for sched_mc=$sched_mc"
> -			else
> -				tst_resm TFAIL "ILB & workload did not run in same package for sched_mc=$sched_mc\
> -. Ensure CONFIG_NO_HZ is set"
> -			fi
> -			if [ $hyper_threaded -eq $YES ]; then
> -				for sched_smt in `seq 1 $max_sched_smt`; do
> -					: $(( TST_COUNT += 1 ))
> -					ilb_test.py -c $sched_mc -t sched_smt -w $work_load; RC=$?
> - 					if [ $RC -eq 0 ]; then
> -						tst_resm TPASS "ILB & workload in same package for sched_mc=$sched_mc \
> -& sched_smt=$sched_smt"
> -					else
> -						tst_resm TFAIL "ILB & workload did not execute in same package for \
> -sched_mc=$sched_mc & sched_smt=$sched_smt. Ensure CONFIG_NO_HZ is set"
> -					fi
> -				done
> -			fi
> -		done
> -	fi
> -fi
> -
> -exit $RC
> diff --git a/testcases/kernel/power_management/runpwtests01.sh b/testcases/kernel/power_management/runpwtests01.sh
> new file mode 100755
> index 0000000..0e5dd1c
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests01.sh
> @@ -0,0 +1,60 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management01"
> +export TST_TOTAL=1
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +# Checking sched_mc sysfs interface
> +is_multi_socket; multi_socket=$?
> +is_multi_core; multi_core=$?
> +if [ ! -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
> +	tst_brkm TCONF "Required kernel configuration for SCHED_MC" \
> +		"NOT set"
> +else
> +	if [ $multi_socket -ne 0 -a $multi_core -ne 0 ] ; then
> +		tst_brkm TCONF "sched_mc_power_savings interface in system" \
> +			"which is not a multi socket &(/) multi core"
> +	fi
> +fi
> +
> +if test_sched_mc.sh ; then
> +	tst_resm TPASS "SCHED_MC sysfs tests"
> +else
> +	tst_resm TFAIL "SCHED_MC sysfs tests"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/runpwtests02.sh b/testcases/kernel/power_management/runpwtests02.sh
> new file mode 100755
> index 0000000..84f6f98
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests02.sh
> @@ -0,0 +1,58 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management02"
> +export TST_TOTAL=1
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +# Check sched_smt_power_savings interface on HT machines
> +is_hyper_threaded; hyper_threaded=$?
> +if [ ! -f /sys/devices/system/cpu/sched_smt_power_savings ] ; then
> +	tst_brkm TCONF "Required kernel configuration for SCHED_SMT NOT set"
> +else
> +	if [ $hyper_threaded -ne 0 ]; then
> +		tst_brkm TCONF "sched_smt_power_saving interface in system" \
> +			"not hyper-threaded"
> +	fi
> +fi
> +
> +if test_sched_smt.sh ; then
> +	tst_resm TPASS "SCHED_SMT sysfs test"
> +else
> +	tst_resm TFAIL "SCHED_SMT sysfs test"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/runpwtests03.sh b/testcases/kernel/power_management/runpwtests03.sh
> new file mode 100755
> index 0000000..844006d
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests03.sh
> @@ -0,0 +1,75 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management03"
> +export TST_TOTAL=4
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +# Checking cpufreq sysfs interface files
> +if [ ! -d /sys/devices/system/cpu/cpu0/cpufreq ] ; then
> +	tst_brkm TCONF "Required kernel configuration for CPU_FREQ NOT set"
> +fi
> +
> +if check_cpufreq_sysfs_files.sh ; then
> +	tst_resm TPASS "CPUFREQ sysfs tests"
> +else
> +	tst_resm TFAIL "CPUFREQ sysfs tests"
> +fi
> +
> +# Changing governors
> +if change_govr.sh ; then
> +	tst_resm TPASS "Changing governors"
> +else
> +	tst_resm TFAIL "Changing governors"
> +fi
> +
> +# Changing frequencies
> +if change_freq.sh ; then
> +	tst_resm TPASS "Changing frequncies"
> +else
> +    tst_resm TFAIL "Changing frequncies"
> +fi
> +
> +# Loading and Unloading governor related kernel modules
> +if pwkm_load_unload.sh ; then
> +	tst_resm TPASS "Loading and Unloading of governor kernel" \
> +		"modules"
> +else
> +	tst_resm TFAIL "Loading and Unloading of governor kernel" \
> +		"modules got failed"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/runpwtests04.sh b/testcases/kernel/power_management/runpwtests04.sh
> new file mode 100755
> index 0000000..5b70f39
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests04.sh
> @@ -0,0 +1,48 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management04"
> +export TST_TOTAL=1
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +# Checking cpuidle sysfs interface files
> +if check_cpuidle_sysfs_files.sh ; then
> +	tst_resm TPASS "CPUIDLE sysfs tests passed"
> +else
> +    tst_resm TFAIL "CPUIDLE sysfs tests failed"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/runpwtests05.sh b/testcases/kernel/power_management/runpwtests05.sh
> new file mode 100755
> index 0000000..0867a3c
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests05.sh
> @@ -0,0 +1,93 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management05"
> +export TST_TOTAL=2
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +tst_kvercmp 2 6 29; rc=$?
> +if [ $rc -eq 2 ] ; then
> +	max_sched_mc=2
> +	max_sched_smt=2
> +else
> +	max_sched_mc=1
> +	max_sched_smt=1
> +fi
> +
> +tst_check_cmds python
> +
> +if ! grep sched_debug -qw /proc/cmdline ; then
> +	tst_brkm TCONF "Kernel cmdline parameter 'sched_debug' needed," \
> +		"CPU Consolidation test cannot run"
> +fi
> +
> +is_hyper_threaded; hyper_threaded=$?
> +if [ ! -f /sys/devices/system/cpu/sched_mc_power_savings \
> +	-o $hyper_threaded -ne 0 ] ; then
> +	tst_brkm TCONF "Required kernel configuration for SCHED_MC" \
> +		"NOT set, or sched_mc_power_savings interface in system" \
> +		"which is not hyper-threaded"
> +fi
> +
> +# sched_domain test
> +echo "max sched mc $max_sched_mc"
> +RC=0
> +for sched_mc in `seq 0 $max_sched_mc`; do
> +	sched_domain.py -c $sched_mc; ret=$?
> +	analyze_sched_domain_result $sched_mc $ret; RC=$?
> +done
> +if [ $RC -eq 0 ]; then
> +	tst_resm TPASS "Sched_domain test for sched_mc"
> +else
> +	tst_resm TFAIL "Sched_domain test for sched_mc"
> +fi
> +
> +# Testcase to validate sched_domain tree
> +RC=0
> +for sched_mc in `seq 0 $max_sched_mc`; do
> +	get_sched_values sched_smt; max_sched_smt=$?
> +	for sched_smt in `seq 0 $max_sched_smt`; do
> +		sched_domain.py -c $sched_mc -t $sched_smt; ret=$?
> +		analyze_sched_domain_result $sched_mc $ret $sched_smt; RC=$?
> +	done
> +done
> +if [ $RC -eq 0 ]; then
> +	tst_resm TPASS "Sched_domain test for sched_mc & sched_smt"
> +else
> +	tst_resm TFAIL "Sched_domain test for sched_mc & sched_smt"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/runpwtests06.sh b/testcases/kernel/power_management/runpwtests06.sh
> new file mode 100755
> index 0000000..384362f
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests06.sh
> @@ -0,0 +1,62 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management06"
> +export TST_TOTAL=1
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +tst_kvercmp 2 6 31; rc=$?
> +if [ $rc -eq 1 -o $rc -eq 2 ] ; then
> +	timer_migr_support_compatible=0
> +else
> +	timer_migr_support_compatible=1
> +fi
> +
> +if [ $timer_migr_support_compatible -eq 1 ]; then
> +	tst_brkm TCONF "Kernel version does not support Timer migration"
> +else
> +	if [ ! -f /proc/sys/kernel/timer_migration ]; then
> +		tst_brkm TBROK "Timer migration interface missing"
> +	fi
> +fi
> +
> +if test_timer_migration.sh; then
> +	tst_resm TPASS "Timer Migration interface test"
> +else
> +	tst_resm TFAIL "Timer migration interface test"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/runpwtests_exclusive01.sh b/testcases/kernel/power_management/runpwtests_exclusive01.sh
> new file mode 100755
> index 0000000..02b974f
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests_exclusive01.sh
> @@ -0,0 +1,112 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management_exclusive01"
> +export TST_TOTAL=2
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +tst_kvercmp 2 6 29; rc=$?
> +if [ $rc -eq 2 ] ; then
> +	max_sched_mc=2
> +	max_sched_smt=2
> +else
> +	max_sched_mc=1
> +	max_sched_smt=1
> +fi
> +
> +is_hyper_threaded; hyper_threaded=$?
> +is_multi_socket; multi_socket=$?
> +is_multi_core; multi_core=$?
> +if [ $multi_socket -ne 0 -o $multi_core -ne 0 -o \
> +	$hyper_threaded -ne 0 ]; then
> +	tst_brkm TCONF "System is not a multi socket & multi core" \
> +		"& hyper-threaded"
> +fi
> +
> +# Test CPU consolidation
> +RC=0
> +for sched_mc in `seq 0  $max_sched_mc`; do
> +	sched_mc_pass_cnt=0
> +	if [ $sched_mc -eq 2 ]; then
> +		work_load="kernbench"
> +	else
> +		work_load="ebizzy"
> +	fi
> +	for repeat_test in `seq 1  10`; do
> +		#Testcase to validate CPU consolidation for sched_mc
> +		if cpu_consolidation.py -c $sched_mc -w $work_load ; then
> +		: $(( sched_mc_pass_cnt += 1 ))
> +		fi
> +	done
> +	analyze_package_consolidation_result $sched_mc \
> +		$sched_mc_pass_cnt; RC=$?
> +done
> +if [ $RC -eq 0 ]; then
> +	tst_resm TPASS "CPU consolidation test for sched_mc"
> +else
> +	tst_resm TFAIL "CPU consolidation test for sched_mc"
> +fi
> +
> +RC=0
> +for sched_mc in `seq 0  $max_sched_mc`; do
> +	if [ $sched_mc -eq 2 ]; then
> +		work_load="kernbench"
> +	else
> +		work_load="ebizzy"
> +	fi
> +	for sched_smt in `seq 0 $max_sched_smt`; do
> +		sched_mc_smt_pass_cnt=0
> +		for repeat_test in `seq 1  10`; do
> +			# Testcase to validate CPU consolidation for
> +			# for sched_mc & sched_smt with stress=50%
> +			if cpu_consolidation.py -c $sched_mc -t $sched_smt \
> +				-w $work_load ; then
> +				: $(( sched_mc_smt_pass_cnt += 1 ))
> +			fi
> +		done
> +		analyze_package_consolidation_result $sched_mc \
> +			$sched_mc_smt_pass_cnt $sched_smt; RC=$?
> +	done
> +done
> +if [ $RC -eq 0 ]; then
> +	tst_resm TPASS "CPU consolidation test for sched_mc &" \
> +		"sched_smt with stress=50%"
> +else
> +	tst_resm TFAIL "CPU consolidation test for sched_mc &" \
> +		"sched_smt with stress=50%"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/runpwtests_exclusive02.sh b/testcases/kernel/power_management/runpwtests_exclusive02.sh
> new file mode 100755
> index 0000000..61f10e1
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests_exclusive02.sh
> @@ -0,0 +1,82 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management_exclusive02"
> +export TST_TOTAL=1
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +tst_kvercmp 2 6 29; rc=$?
> +if [ $rc -eq 2 ] ; then
> +	max_sched_smt=2
> +else
> +	max_sched_smt=1
> +fi
> +
> +is_hyper_threaded; hyper_threaded=$?
> +is_multi_socket; multi_socket=$?
> +is_multi_core; multi_core=$?
> +if [ $hyper_threaded -ne 0 -o $multi_socket -ne 0 \
> +	-o $multi_core -eq 0 ]; then
> +	tst_brkm TCONF "System is a multi core but not multi" \
> +		"socket & hyper-threaded"
> +fi
> +
> +#Testcase to validate consolidation at core level
> +RC=0
> +for sched_smt in `seq 0 $max_sched_smt`; do
> +	if [ $sched_smt -eq 2 ]; then
> +		work_load="kernbench"
> +	else
> +		work_load="ebizzy"
> +	fi
> +	sched_smt_pass_cnt=0
> +	stress="thread"
> +	for repeat_test in `seq 1  10`; do
> +		if cpu_consolidation.py -t $sched_smt -w $work_load \
> +			-s $stress; then
> +			: $(( sched_smt_pass_cnt += 1 ))
> +		fi
> +	done
> +	analyze_core_consolidation_result $sched_smt \
> +		$sched_smt_pass_cnt; RC=$?
> +done
> +if [ $RC -eq 0 ]; then
> +    tst_resm TPASS "Consolidation test at core level for sched_smt"
> +else
> +    tst_resm TFAIL "Consolidation test at core level for sched_smt"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/runpwtests_exclusive03.sh b/testcases/kernel/power_management/runpwtests_exclusive03.sh
> new file mode 100755
> index 0000000..c85312b
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests_exclusive03.sh
> @@ -0,0 +1,110 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management_exclusive03"
> +export TST_TOTAL=2
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +tst_kvercmp 2 6 29; rc=$?
> +if [ $rc -eq 2 ] ; then
> +	max_sched_mc=2
> +	max_sched_smt=2
> +else
> +	max_sched_mc=1
> +	max_sched_smt=1
> +fi
> +
> +is_hyper_threaded; hyper_threaded=$?
> +is_multi_socket; multi_socket=$?
> +is_multi_core; multi_core=$?
> +if [ $multi_socket -ne 0 -o $multi_core -ne 0 -o \
> +	$hyper_threaded -ne 0 ]; then
> +	tst_brkm TCONF "System is not a multi socket & multi core" \
> +		"& hyper-threaded"
> +fi
> +
> +# Verify threads consolidation stops when sched_mc &(/) sched_smt
> +# is disabled.
> +# Vary sched_mc from 1/2 to 0 when workload is running and
> +# ensure that tasks do not consolidate to single package when
> +# sched_mc is set to 0.
> +RC=0
> +for sched_mc in `seq 1  $max_sched_mc`; do
> +	if cpu_consolidation.py -v -c $sched_mc; then
> +		echo "Test PASS: CPU consolidation test by varying" \
> +			"sched_mc $sched_mc to 0"
> +	else
> +		RC=1
> +		echo "Test FAIL: CPU consolidation test by varying" \
> +			"sched_mc $sched_mc to 0"
> +	fi
> +done
> +if [ $RC -eq 0 ]; then
> +	tst_resm TPASS "CPU consolidation test by varying sched_mc"
> +else
> +	tst_resm TFAIL "CPU consolidation test by varying sched_mc"
> +fi
> +
> +# Vary sched_mc & sched_smt from 1 to 0 & 2 to 0 when workload
> +# is running and ensure that tasks do not consolidate to single
> +# package when sched_mc is set to 0.
> +RC=0
> +for sched_mc in `seq 1  $max_sched_mc`; do
> +	for sched_smt in `seq 1  $max_sched_smt`; do
> +		if [ $sched_smt -eq $sched_mc ]; then
> +			if cpu_consolidation.py -v -c $sched_mc \
> +				-t $sched_smt; then
> +				echo "Test PASS: CPU consolidation test by" \
> +					"varying sched_mc & sched_smt from" \
> +					"$sched_mc to 0"
> +			else
> +				RC=1
> +				echo "Test FAIL: CPU consolidation test by" \
> +					"varying sched_mc & sched_smt from" \
> +					"$sched_mc to 0"
> +			fi
> +		fi
> +	done
> +done
> +if [ $RC -eq 0 ]; then
> +	tst_resm TPASS "CPU consolidation test by varying" \
> +		"sched_mc & sched_smt"
> +else
> +	tst_resm TFAIL "CPU consolidation test by varying" \
> +		"sched_mc & sched_smt"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/runpwtests_exclusive04.sh b/testcases/kernel/power_management/runpwtests_exclusive04.sh
> new file mode 100755
> index 0000000..6bb27f8
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests_exclusive04.sh
> @@ -0,0 +1,67 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management_exclusive04"
> +export TST_TOTAL=2
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +is_hyper_threaded; hyper_threaded=$?
> +is_multi_socket; multi_socket=$?
> +if [ $hyper_threaded -ne 0 -o $multi_socket -ne 0 ]; then
> +	tst_brkm TCONF "System is not a multi socket & hyper-threaded"
> +fi
> +
> +# Verify threads consolidation stops when sched_smt is
> +# disabled in HT systems.
> +# Vary only sched_smt from 1 to 0 when workload is running
> +# and ensure that tasks do not consolidate to single core
> +# when sched_smt is set to 0.
> +if cpu_consolidation.py -v -t 1; then
> +	tst_resm TPASS "CPU consolidation test by varying sched_smt from 1 to 0"
> +else
> +	tst_resm TFAIL "CPU consolidation test by varying sched_smt from 1 to 0"
> +fi
> +
> +# Vary only sched_smt from 2 to 0 when workload is running
> +# and ensure that tasks do not consolidate to single core
> +# when sched_smt is set to 0.
> +if cpu_consolidation.py -v -t 2; then
> +	tst_resm TPASS "CPU consolidation test by varying sched_smt from 2 to 0"
> +else
> +	tst_resm TFAIL "CPU consolidation test by varying sched_smt from 2 to 0"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/runpwtests_exclusive05.sh b/testcases/kernel/power_management/runpwtests_exclusive05.sh
> new file mode 100755
> index 0000000..f916c92
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests_exclusive05.sh
> @@ -0,0 +1,112 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management_exclusive05"
> +export TST_TOTAL=2
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi
> +
> +tst_kvercmp 2 6 29; rc=$?
> +if [ $rc -eq 2 ] ; then
> +	max_sched_mc=2
> +	max_sched_smt=2
> +else
> +	max_sched_mc=1
> +	max_sched_smt=1
> +fi
> +
> +is_hyper_threaded; hyper_threaded=$?
> +is_multi_socket; multi_socket=$?
> +is_multi_core; multi_core=$?
> +if [ $multi_socket -ne 0 -o $multi_core -ne 0 -o \
> +	$hyper_threaded -ne 0 ]; then
> +	tst_brkm TCONF "System is not a multi socket & multi core" \
> +		"& hyper-threaded"
> +fi
> +
> +# Verify ILB runs in same package as workload.
> +RC=0
> +for sched_mc in `seq 1 $max_sched_mc`; do
> +	if [ $sched_mc -eq 2 ]; then
> +		work_load="kernbench"
> +	else
> +		work_load="ebizzy"
> +	fi
> +
> +	ilb_test.py -c $sched_mc -w $work_load
> +	if [ $? -eq 0 ]; then
> +		echo "Test PASS: ILB & workload in same package for" \
> +			"sched_mc=$sched_mc"
> +	else
> +		RC=1
> +		echo "Test FAIL: ILB & workload did not run in same package" \
> +			"for sched_mc=$sched_mc. Ensure CONFIG_NO_HZ is set"
> +	fi
> +done
> +if [ $RC -eq 0 ]; then
> +	tst_resm TPASS "ILB & workload test in same package for sched_mc"
> +else
> +	tst_resm TFAIL "ILB & workload test in same package for sched_mc"
> +fi
> +
> +RC=0
> +for sched_mc in `seq 1 $max_sched_mc`; do
> +	if [ $sched_mc -eq 2 ]; then
> +		work_load="kernbench"
> +	else
> +		work_load="ebizzy"
> +	fi
> +	for sched_smt in `seq 1 $max_sched_smt`; do
> +		ilb_test.py -c $sched_mc -t sched_smt -w $work_load
> +		if [ $? -eq 0 ]; then
> +			echo "Test PASS: ILB & workload in same package for" \
> +				"sched_mc=$sched_mc & sched_smt=$sched_smt"
> +		else
> +			RC=1
> +			echo "Test FAIL: ILB & workload did not execute in" \
> +				"same package for sched_mc=$sched_mc &" \
> +				"sched_smt=$sched_smt. Ensure CONFIG_NO_HZ is set"
> +		fi
> +	done
> +done
> +if [ $RC -eq 0 ]; then
> +	tst_resm TPASS "ILB & workload test in same package for" \
> +		"sched_mc & sched_smt"
> +else
> +	tst_resm TFAIL "ILB & workload test in same package for" \
> +		"sched_mc & sched_smt"
> +fi
> +
> +tst_exit
> diff --git a/testcases/kernel/power_management/sched_domain.py b/testcases/kernel/power_management/sched_domain.py
> index 3d19ac0..1ff38b1 100755
> --- a/testcases/kernel/power_management/sched_domain.py
> +++ b/testcases/kernel/power_management/sched_domain.py
> @@ -5,8 +5,6 @@
>
>   import os
>   import sys
> -LIB_DIR = "%s/lib" % os.path.dirname(__file__)
> -sys.path.append(LIB_DIR)
>   from sched_mc import *
>   from optparse import OptionParser
>
>

------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [LTP] [PATCH] power_management: add it into default
  2014-12-12  9:51 [LTP] [PATCH] power_management: add it into default Xing Gu
  2015-01-20  7:15 ` gux.fnst
@ 2015-01-28 15:32 ` Cyril Hrubis
  1 sibling, 0 replies; 3+ messages in thread
From: Cyril Hrubis @ 2015-01-28 15:32 UTC (permalink / raw)
  To: Xing Gu; +Cc: ltp-list

Hi!
> * Modify Makefile.
> 
> * Split runpwtests.sh into separate testcases,
>   eg. runpwtests01.sh.
> 
> * Use functions in test.sh, eg. tst_brkm.
> 
> * Fix error of change_govr.sh, change_freq.sh, etc.
> 
> * Since I don't have suitable machines and can't test
>   some testcases' correctness, currently these cases
>   are disabled.

This patch does much more than just add these to default.

Can you please split it into several smaller changes? One would be the
change in the build system. One change to split the tests into several
testcases. And split the functional changes to the testcases to
separate patches with a clear description of the change.

> diff --git a/testcases/kernel/power_management/runpwtests01.sh b/testcases/kernel/power_management/runpwtests01.sh
> new file mode 100755
> index 0000000..0e5dd1c
> --- /dev/null
> +++ b/testcases/kernel/power_management/runpwtests01.sh
> @@ -0,0 +1,60 @@
> +#! /bin/sh
> +#
> +# Copyright (c) International Business Machines  Corp., 2001
> +# Author: Nageswara R Sastry <nasastry@in.ibm.com>
> +#
> +# This program is free software;  you can redistribute it and#or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program;  if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +export TCID="Power_Management01"
> +export TST_TOTAL=1
> +
> +. test.sh
> +. pm_include.sh
> +
> +# Checking required kernel version and architecture
> +tst_kvercmp 2 6 21; rc=$?
> +if [ $rc -ne 1 -a $rc -ne 2 ] ; then
> +	tst_brkm TCONF "Kernel version not supported; not running testcases"
> +else
> +	case "$(uname -m)" in
> +	i[4-6]86|x86_64)
> +		;;
> +	*)
> +		tst_brkm TCONF "Arch not supported; not running testcases"
> +		;;
> +	esac
> +fi

This piece of code is copypasted into all the of the scripts, it should
be in a common library instead.

-- 
Cyril Hrubis
chrubis@suse.cz

------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-01-28 15:33 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-12  9:51 [LTP] [PATCH] power_management: add it into default Xing Gu
2015-01-20  7:15 ` gux.fnst
2015-01-28 15:32 ` Cyril Hrubis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox