Re: [PATCH PM-QA v2] cputopology: add scheduler domain flag test
On 3 March 2015 at 22:02, Larry Bassel larry.bas...@linaro.org wrote: Add test which checks and prints scheduler domain flags. Signed-off-by: Larry Bassel larry.bas...@linaro.org --- cputopology/cputopology_03.sh | 109 + cputopology/cputopology_03.txt | 1 + 2 files changed, 110 insertions(+) create mode 100755 cputopology/cputopology_03.sh create mode 100644 cputopology/cputopology_03.txt diff --git a/cputopology/cputopology_03.sh b/cputopology/cputopology_03.sh new file mode 100755 index 000..bfff5de --- /dev/null +++ b/cputopology/cputopology_03.sh @@ -0,0 +1,109 @@ +#!/bin/sh +# +# PM-QA validation test suite for the power management on Linux +# +# Copyright (C) 2015, Linaro Limited. +# +# 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. +# +# Contributors: +# Larry Bassel larry.bas...@linaro.org +# + +# URL : https://wiki.linaro.org/WorkingGroups/PowerManagement/Resources/TestSuite/PmQaSpecification#cputopology_03 + +. ../include/functions.sh + +is_flag_set() { +flag=$1 +mask=$2 +message=$3 + +value=$(( $flag $mask )) + +if [ $value -ne 0 ]; then + echo $message set +else + echo $message not set +fi +} + +are_flags_set() { +val=$1 +domain_num=$2 + +# flag value, flag description +set -- 0x80 domain$domain_num share cpu capacity flag 0x100 domain$domain_num share power domain flag 0x200 domain$domain_num share cpu package resources flag + +if [ $(($# % 2)) -ne 0 ]; then +echo WARNING: malformed flag value, description in test +fi + +nflags=$(($# / 2)) +i=1 + +while [ $i -le $nflags ] ; do + flagval=$((2*i-1)) +eval var1=\${$flagval} + flagstr=$((2*i)) +eval var2=\${$flagstr} +is_flag_set $val $var1 $var2 + i=$(( i + 1)) +done +} + +check_sched_domain_flags() { + +cpu_num=$1 +domain_num=$2 + + sched_domain_flags=/proc/sys/kernel/sched_domain/$cpu_num/domain$domain_num/flags +val=$(cat $sched_domain_flags) + +check sched_domain_flags (domain $domain_num) test \$val\ != \-1\ +printf domain$domain_num flag 0x%x\n $val + +mask=$((0x7fff)) +unexpected_bits=$((val ~mask)) + +if [ $unexpected_bits -ne 0 ]; then +printf NOTE: unexpected flag bits 0x%x set\n $unexpected_bits +fi + +are_flags_set $val $domain_num +} + +check_all_sched_domain_flags() { + +sched_domain_0_path=/proc/sys/kernel/sched_domain/cpu0 + +if [ ! -d $sched_domain_0_path ]; then +log_skip no sched_domain directory present + return +fi + +n=0 + +sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain0/flags + +while [ -e $sched_domain_flags_path ]; do +check_sched_domain_flags $1 $n + n=$(( n + 1)) + sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain$n/flags +done +} + +for_each_cpu check_all_sched_domain_flags 1 || exit 1 +test_status_show diff --git a/cputopology/cputopology_03.txt b/cputopology/cputopology_03.txt new file mode 100644 index 000..e43de69 --- /dev/null +++ b/cputopology/cputopology_03.txt @@ -0,0 +1 @@ +test that the sched_domain files are present and show the topology related flags Hi Larry, You can add my Ack-by Vincent -- 1.9.1 ___ linaro-dev mailing list linaro-dev@lists.linaro.org https://lists.linaro.org/mailman/listinfo/linaro-dev
Re: [PATCH PM-QA v2] cputopology: add scheduler domain flag test
Applied with Vincent's ack: http://git.linaro.org/power/pm-qa.git/commit/04211670ed04645fe44e1244aa799658423bac47 Thanks! :) On 1 April 2015 at 00:23, Vincent Guittot vincent.guit...@linaro.org wrote: On 3 March 2015 at 22:02, Larry Bassel larry.bas...@linaro.org wrote: Add test which checks and prints scheduler domain flags. Signed-off-by: Larry Bassel larry.bas...@linaro.org --- cputopology/cputopology_03.sh | 109 + cputopology/cputopology_03.txt | 1 + 2 files changed, 110 insertions(+) create mode 100755 cputopology/cputopology_03.sh create mode 100644 cputopology/cputopology_03.txt diff --git a/cputopology/cputopology_03.sh b/cputopology/cputopology_03.sh new file mode 100755 index 000..bfff5de --- /dev/null +++ b/cputopology/cputopology_03.sh @@ -0,0 +1,109 @@ +#!/bin/sh +# +# PM-QA validation test suite for the power management on Linux +# +# Copyright (C) 2015, Linaro Limited. +# +# 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. +# +# Contributors: +# Larry Bassel larry.bas...@linaro.org +# + +# URL : https://wiki.linaro.org/WorkingGroups/PowerManagement/Resources/TestSuite/PmQaSpecification#cputopology_03 + +. ../include/functions.sh + +is_flag_set() { +flag=$1 +mask=$2 +message=$3 + +value=$(( $flag $mask )) + +if [ $value -ne 0 ]; then + echo $message set +else + echo $message not set +fi +} + +are_flags_set() { +val=$1 +domain_num=$2 + +# flag value, flag description +set -- 0x80 domain$domain_num share cpu capacity flag 0x100 domain$domain_num share power domain flag 0x200 domain$domain_num share cpu package resources flag + +if [ $(($# % 2)) -ne 0 ]; then +echo WARNING: malformed flag value, description in test +fi + +nflags=$(($# / 2)) +i=1 + +while [ $i -le $nflags ] ; do + flagval=$((2*i-1)) +eval var1=\${$flagval} + flagstr=$((2*i)) +eval var2=\${$flagstr} +is_flag_set $val $var1 $var2 + i=$(( i + 1)) +done +} + +check_sched_domain_flags() { + +cpu_num=$1 +domain_num=$2 + + sched_domain_flags=/proc/sys/kernel/sched_domain/$cpu_num/domain$domain_num/flags +val=$(cat $sched_domain_flags) + +check sched_domain_flags (domain $domain_num) test \$val\ != \-1\ +printf domain$domain_num flag 0x%x\n $val + +mask=$((0x7fff)) +unexpected_bits=$((val ~mask)) + +if [ $unexpected_bits -ne 0 ]; then +printf NOTE: unexpected flag bits 0x%x set\n $unexpected_bits +fi + +are_flags_set $val $domain_num +} + +check_all_sched_domain_flags() { + +sched_domain_0_path=/proc/sys/kernel/sched_domain/cpu0 + +if [ ! -d $sched_domain_0_path ]; then +log_skip no sched_domain directory present + return +fi + +n=0 + +sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain0/flags + +while [ -e $sched_domain_flags_path ]; do +check_sched_domain_flags $1 $n + n=$(( n + 1)) + sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain$n/flags +done +} + +for_each_cpu check_all_sched_domain_flags 1 || exit 1 +test_status_show diff --git a/cputopology/cputopology_03.txt b/cputopology/cputopology_03.txt new file mode 100644 index 000..e43de69 --- /dev/null +++ b/cputopology/cputopology_03.txt @@ -0,0 +1 @@ +test that the sched_domain files are present and show the topology related flags Hi Larry, You can add my Ack-by Vincent -- 1.9.1 ___ linaro-dev mailing list linaro-dev@lists.linaro.org https://lists.linaro.org/mailman/listinfo/linaro-dev
Re: [PATCH PM-QA v2] cputopology: add scheduler domain flag test
On Wed, Mar 11, 2015 at 1:08 AM, Larry Bassel larry.bas...@linaro.org wrote: On 10 Mar 15 12:30, Lisa Nguyen wrote: On 3 March 2015 at 13:02, Larry Bassel larry.bas...@linaro.org wrote: Add test which checks and prints scheduler domain flags. Signed-off-by: Larry Bassel larry.bas...@linaro.org --- cputopology/cputopology_03.sh | 109 + cputopology/cputopology_03.txt | 1 + 2 files changed, 110 insertions(+) create mode 100755 cputopology/cputopology_03.sh create mode 100644 cputopology/cputopology_03.txt diff --git a/cputopology/cputopology_03.sh b/cputopology/cputopology_03.sh new file mode 100755 index 000..bfff5de --- /dev/null +++ b/cputopology/cputopology_03.sh @@ -0,0 +1,109 @@ +#!/bin/sh +# +# PM-QA validation test suite for the power management on Linux +# +# Copyright (C) 2015, Linaro Limited. +# +# 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. +# +# Contributors: +# Larry Bassel larry.bas...@linaro.org +# + +# URL : https://wiki.linaro.org/WorkingGroups/PowerManagement/Resources/TestSuite/PmQaSpecification#cputopology_03 + +. ../include/functions.sh + +is_flag_set() { +flag=$1 +mask=$2 +message=$3 + +value=$(( $flag $mask )) + +if [ $value -ne 0 ]; then + echo $message set +else + echo $message not set +fi +} + +are_flags_set() { +val=$1 +domain_num=$2 + +# flag value, flag description +set -- 0x80 domain$domain_num share cpu capacity flag 0x100 domain$domain_num share power domain flag 0x200 domain$domain_num share cpu package resources flag + +if [ $(($# % 2)) -ne 0 ]; then +echo WARNING: malformed flag value, description in test +fi + +nflags=$(($# / 2)) +i=1 + +while [ $i -le $nflags ] ; do + flagval=$((2*i-1)) +eval var1=\${$flagval} + flagstr=$((2*i)) +eval var2=\${$flagstr} +is_flag_set $val $var1 $var2 + i=$(( i + 1)) +done +} + +check_sched_domain_flags() { + +cpu_num=$1 +domain_num=$2 + + sched_domain_flags=/proc/sys/kernel/sched_domain/$cpu_num/domain$domain_num/flags +val=$(cat $sched_domain_flags) + +check sched_domain_flags (domain $domain_num) test \$val\ != \-1\ +printf domain$domain_num flag 0x%x\n $val + +mask=$((0x7fff)) +unexpected_bits=$((val ~mask)) + +if [ $unexpected_bits -ne 0 ]; then +printf NOTE: unexpected flag bits 0x%x set\n $unexpected_bits +fi + +are_flags_set $val $domain_num +} + +check_all_sched_domain_flags() { + +sched_domain_0_path=/proc/sys/kernel/sched_domain/cpu0 + +if [ ! -d $sched_domain_0_path ]; then +log_skip no sched_domain directory present + return +fi + +n=0 + +sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain0/flags + +while [ -e $sched_domain_flags_path ]; do +check_sched_domain_flags $1 $n + n=$(( n + 1)) + sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain$n/flags +done +} + +for_each_cpu check_all_sched_domain_flags 1 || exit 1 +test_status_show diff --git a/cputopology/cputopology_03.txt b/cputopology/cputopology_03.txt new file mode 100644 index 000..e43de69 --- /dev/null +++ b/cputopology/cputopology_03.txt @@ -0,0 +1 @@ +test that the sched_domain files are present and show the topology related flags -- 1.9.1 Hi Larry, I ran your script on the chromebook2 with mainline v4 quickly, and these are the results I get: root@linaro-developer:~/pm-qa/cputopology# ./cputopology_03.sh cputopology_03.0/cpu0: checking sched_domain_flags (domain 0)... Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03.0/cpu1: checking sched_domain_flags (domain 0)... Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set
Re: [PATCH PM-QA v2] cputopology: add scheduler domain flag test
On 24 March 2015 at 07:34, Amit Kucheria amit.kuche...@linaro.org wrote: On Wed, Mar 11, 2015 at 1:08 AM, Larry Bassel larry.bas...@linaro.org wrote: On 10 Mar 15 12:30, Lisa Nguyen wrote: On 3 March 2015 at 13:02, Larry Bassel larry.bas...@linaro.org wrote: Add test which checks and prints scheduler domain flags. Signed-off-by: Larry Bassel larry.bas...@linaro.org --- cputopology/cputopology_03.sh | 109 + cputopology/cputopology_03.txt | 1 + 2 files changed, 110 insertions(+) create mode 100755 cputopology/cputopology_03.sh create mode 100644 cputopology/cputopology_03.txt diff --git a/cputopology/cputopology_03.sh b/cputopology/cputopology_03.sh new file mode 100755 index 000..bfff5de --- /dev/null +++ b/cputopology/cputopology_03.sh @@ -0,0 +1,109 @@ +#!/bin/sh +# +# PM-QA validation test suite for the power management on Linux +# +# Copyright (C) 2015, Linaro Limited. +# +# 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. +# +# Contributors: +# Larry Bassel larry.bas...@linaro.org +# + +# URL : https://wiki.linaro.org/WorkingGroups/PowerManagement/Resources/TestSuite/PmQaSpecification#cputopology_03 + +. ../include/functions.sh + +is_flag_set() { +flag=$1 +mask=$2 +message=$3 + +value=$(( $flag $mask )) + +if [ $value -ne 0 ]; then + echo $message set +else + echo $message not set +fi +} + +are_flags_set() { +val=$1 +domain_num=$2 + +# flag value, flag description +set -- 0x80 domain$domain_num share cpu capacity flag 0x100 domain$domain_num share power domain flag 0x200 domain$domain_num share cpu package resources flag + +if [ $(($# % 2)) -ne 0 ]; then +echo WARNING: malformed flag value, description in test +fi + +nflags=$(($# / 2)) +i=1 + +while [ $i -le $nflags ] ; do + flagval=$((2*i-1)) +eval var1=\${$flagval} + flagstr=$((2*i)) +eval var2=\${$flagstr} +is_flag_set $val $var1 $var2 + i=$(( i + 1)) +done +} + +check_sched_domain_flags() { + +cpu_num=$1 +domain_num=$2 + + sched_domain_flags=/proc/sys/kernel/sched_domain/$cpu_num/domain$domain_num/flags +val=$(cat $sched_domain_flags) + +check sched_domain_flags (domain $domain_num) test \$val\ != \-1\ +printf domain$domain_num flag 0x%x\n $val + +mask=$((0x7fff)) +unexpected_bits=$((val ~mask)) + +if [ $unexpected_bits -ne 0 ]; then +printf NOTE: unexpected flag bits 0x%x set\n $unexpected_bits +fi + +are_flags_set $val $domain_num +} + +check_all_sched_domain_flags() { + +sched_domain_0_path=/proc/sys/kernel/sched_domain/cpu0 + +if [ ! -d $sched_domain_0_path ]; then +log_skip no sched_domain directory present + return +fi + +n=0 + + sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain0/flags + +while [ -e $sched_domain_flags_path ]; do +check_sched_domain_flags $1 $n + n=$(( n + 1)) + sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain$n/flags +done +} + +for_each_cpu check_all_sched_domain_flags 1 || exit 1 +test_status_show diff --git a/cputopology/cputopology_03.txt b/cputopology/cputopology_03.txt new file mode 100644 index 000..e43de69 --- /dev/null +++ b/cputopology/cputopology_03.txt @@ -0,0 +1 @@ +test that the sched_domain files are present and show the topology related flags -- 1.9.1 Hi Larry, I ran your script on the chromebook2 with mainline v4 quickly, and these are the results I get: root@linaro-developer:~/pm-qa/cputopology# ./cputopology_03.sh cputopology_03.0/cpu0: checking sched_domain_flags (domain 0)... Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03.0/cpu1: checking sched_domain_flags (domain 0)... Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power
Re: [PATCH PM-QA v2] cputopology: add scheduler domain flag test
On Tue, Mar 24, 2015 at 1:58 PM, Vincent Guittot vincent.guit...@linaro.org wrote: On 24 March 2015 at 07:34, Amit Kucheria amit.kuche...@linaro.org wrote: On Wed, Mar 11, 2015 at 1:08 AM, Larry Bassel larry.bas...@linaro.org wrote: root@linaro-developer:~/pm-qa/cputopology# ./cputopology_03.sh cputopology_03.0/cpu0: checking sched_domain_flags (domain 0)... Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03.0/cpu1: checking sched_domain_flags (domain 0)... Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03.0/cpu2: checking sched_domain_flags (domain 0)... Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03.0/cpu3: checking sched_domain_flags (domain 0)... Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03: pass I'm not sure if printing the domain0 flag is still necessary except for debugging, but I'll let others comment. I think someone wanted all flags interpreted, personally I think this is overkill since the test IMHO should be focused on flags important to EAS, printing the flag value is a compromise between nothing and full interpretation. One question that I may have forgotten to ask you earlier: How did you define a test failure? AFAICT, I get the impression that the test passes every time, or if it will skip if the sched_domain directory doesn't exist. I haven't come across an instance where a subtest fails. Yes, I think the test isn't so much a pass/fail one than an informational one and the person running the test would need to know if the flag settings make sense. Do (any of you) have any better ideas here? Perhaps if the directory doesn't exist it should be a fail (if the EAS patches creating this directory weren't applied or were not working properly, the directory would not exist). I think the sched_domain directory is always present. Vincent? It's present only with debug config Larry, this fact should be documented in the test description with the name of the config option. I think the power domain flag is the interesting one for EAS but I'll defer to Vincent on whether we need to care about the others - e.g. we in case of cpu capacity we care about the values they're set to. We are interested in the 3 flags that are tested by the script: share capacity,share resources and share power domain These flags reflect the soc topology ___ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev
Re: [PATCH PM-QA v2] cputopology: add scheduler domain flag test
On 10 Mar 15 12:30, Lisa Nguyen wrote: On 3 March 2015 at 13:02, Larry Bassel larry.bas...@linaro.org wrote: Add test which checks and prints scheduler domain flags. Signed-off-by: Larry Bassel larry.bas...@linaro.org --- cputopology/cputopology_03.sh | 109 + cputopology/cputopology_03.txt | 1 + 2 files changed, 110 insertions(+) create mode 100755 cputopology/cputopology_03.sh create mode 100644 cputopology/cputopology_03.txt diff --git a/cputopology/cputopology_03.sh b/cputopology/cputopology_03.sh new file mode 100755 index 000..bfff5de --- /dev/null +++ b/cputopology/cputopology_03.sh @@ -0,0 +1,109 @@ +#!/bin/sh +# +# PM-QA validation test suite for the power management on Linux +# +# Copyright (C) 2015, Linaro Limited. +# +# 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. +# +# Contributors: +# Larry Bassel larry.bas...@linaro.org +# + +# URL : https://wiki.linaro.org/WorkingGroups/PowerManagement/Resources/TestSuite/PmQaSpecification#cputopology_03 + +. ../include/functions.sh + +is_flag_set() { +flag=$1 +mask=$2 +message=$3 + +value=$(( $flag $mask )) + +if [ $value -ne 0 ]; then + echo $message set +else + echo $message not set +fi +} + +are_flags_set() { +val=$1 +domain_num=$2 + +# flag value, flag description +set -- 0x80 domain$domain_num share cpu capacity flag 0x100 domain$domain_num share power domain flag 0x200 domain$domain_num share cpu package resources flag + +if [ $(($# % 2)) -ne 0 ]; then +echo WARNING: malformed flag value, description in test +fi + +nflags=$(($# / 2)) +i=1 + +while [ $i -le $nflags ] ; do + flagval=$((2*i-1)) +eval var1=\${$flagval} + flagstr=$((2*i)) +eval var2=\${$flagstr} +is_flag_set $val $var1 $var2 + i=$(( i + 1)) +done +} + +check_sched_domain_flags() { + +cpu_num=$1 +domain_num=$2 + + sched_domain_flags=/proc/sys/kernel/sched_domain/$cpu_num/domain$domain_num/flags +val=$(cat $sched_domain_flags) + +check sched_domain_flags (domain $domain_num) test \$val\ != \-1\ +printf domain$domain_num flag 0x%x\n $val + +mask=$((0x7fff)) +unexpected_bits=$((val ~mask)) + +if [ $unexpected_bits -ne 0 ]; then +printf NOTE: unexpected flag bits 0x%x set\n $unexpected_bits +fi + +are_flags_set $val $domain_num +} + +check_all_sched_domain_flags() { + +sched_domain_0_path=/proc/sys/kernel/sched_domain/cpu0 + +if [ ! -d $sched_domain_0_path ]; then +log_skip no sched_domain directory present + return +fi + +n=0 + +sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain0/flags + +while [ -e $sched_domain_flags_path ]; do +check_sched_domain_flags $1 $n + n=$(( n + 1)) + sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain$n/flags +done +} + +for_each_cpu check_all_sched_domain_flags 1 || exit 1 +test_status_show diff --git a/cputopology/cputopology_03.txt b/cputopology/cputopology_03.txt new file mode 100644 index 000..e43de69 --- /dev/null +++ b/cputopology/cputopology_03.txt @@ -0,0 +1 @@ +test that the sched_domain files are present and show the topology related flags -- 1.9.1 Hi Larry, I ran your script on the chromebook2 with mainline v4 quickly, and these are the results I get: root@linaro-developer:~/pm-qa/cputopology# ./cputopology_03.sh cputopology_03.0/cpu0: checking sched_domain_flags (domain 0)...Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03.0/cpu1: checking sched_domain_flags (domain 0)...Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03.0/cpu2: checking sched_domain_flags (domain 0)...Ok domain0 flag
Re: [PATCH PM-QA v2] cputopology: add scheduler domain flag test
On 3 March 2015 at 13:02, Larry Bassel larry.bas...@linaro.org wrote: Add test which checks and prints scheduler domain flags. Signed-off-by: Larry Bassel larry.bas...@linaro.org --- cputopology/cputopology_03.sh | 109 + cputopology/cputopology_03.txt | 1 + 2 files changed, 110 insertions(+) create mode 100755 cputopology/cputopology_03.sh create mode 100644 cputopology/cputopology_03.txt diff --git a/cputopology/cputopology_03.sh b/cputopology/cputopology_03.sh new file mode 100755 index 000..bfff5de --- /dev/null +++ b/cputopology/cputopology_03.sh @@ -0,0 +1,109 @@ +#!/bin/sh +# +# PM-QA validation test suite for the power management on Linux +# +# Copyright (C) 2015, Linaro Limited. +# +# 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. +# +# Contributors: +# Larry Bassel larry.bas...@linaro.org +# + +# URL : https://wiki.linaro.org/WorkingGroups/PowerManagement/Resources/TestSuite/PmQaSpecification#cputopology_03 + +. ../include/functions.sh + +is_flag_set() { +flag=$1 +mask=$2 +message=$3 + +value=$(( $flag $mask )) + +if [ $value -ne 0 ]; then + echo $message set +else + echo $message not set +fi +} + +are_flags_set() { +val=$1 +domain_num=$2 + +# flag value, flag description +set -- 0x80 domain$domain_num share cpu capacity flag 0x100 domain$domain_num share power domain flag 0x200 domain$domain_num share cpu package resources flag + +if [ $(($# % 2)) -ne 0 ]; then +echo WARNING: malformed flag value, description in test +fi + +nflags=$(($# / 2)) +i=1 + +while [ $i -le $nflags ] ; do + flagval=$((2*i-1)) +eval var1=\${$flagval} + flagstr=$((2*i)) +eval var2=\${$flagstr} +is_flag_set $val $var1 $var2 + i=$(( i + 1)) +done +} + +check_sched_domain_flags() { + +cpu_num=$1 +domain_num=$2 + + sched_domain_flags=/proc/sys/kernel/sched_domain/$cpu_num/domain$domain_num/flags +val=$(cat $sched_domain_flags) + +check sched_domain_flags (domain $domain_num) test \$val\ != \-1\ +printf domain$domain_num flag 0x%x\n $val + +mask=$((0x7fff)) +unexpected_bits=$((val ~mask)) + +if [ $unexpected_bits -ne 0 ]; then +printf NOTE: unexpected flag bits 0x%x set\n $unexpected_bits +fi + +are_flags_set $val $domain_num +} + +check_all_sched_domain_flags() { + +sched_domain_0_path=/proc/sys/kernel/sched_domain/cpu0 + +if [ ! -d $sched_domain_0_path ]; then +log_skip no sched_domain directory present + return +fi + +n=0 + +sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain0/flags + +while [ -e $sched_domain_flags_path ]; do +check_sched_domain_flags $1 $n + n=$(( n + 1)) + sched_domain_flags_path=/proc/sys/kernel/sched_domain/$1/domain$n/flags +done +} + +for_each_cpu check_all_sched_domain_flags 1 || exit 1 +test_status_show diff --git a/cputopology/cputopology_03.txt b/cputopology/cputopology_03.txt new file mode 100644 index 000..e43de69 --- /dev/null +++ b/cputopology/cputopology_03.txt @@ -0,0 +1 @@ +test that the sched_domain files are present and show the topology related flags -- 1.9.1 Hi Larry, I ran your script on the chromebook2 with mainline v4 quickly, and these are the results I get: root@linaro-developer:~/pm-qa/cputopology# ./cputopology_03.sh cputopology_03.0/cpu0: checking sched_domain_flags (domain 0)...Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03.0/cpu1: checking sched_domain_flags (domain 0)...Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03.0/cpu2: checking sched_domain_flags (domain 0)...Ok domain0 flag 0x102f domain0 share cpu capacity flag not set domain0 share power domain flag not set domain0 share cpu package resources flag not set cputopology_03.0/cpu3: checking sched_domain_flags (domain 0)...