Re: [PATCH PM-QA v2] cputopology: add scheduler domain flag test

2015-04-01 Thread Vincent Guittot
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

2015-04-01 Thread Lisa Nguyen
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

2015-03-24 Thread Amit Kucheria
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

2015-03-24 Thread Vincent Guittot
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

2015-03-24 Thread Amit Kucheria
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

2015-03-12 Thread Larry Bassel
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

2015-03-10 Thread Lisa Nguyen
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)...