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 0000000..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 0000000..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