On 24 Mar 15 12:10, Amit Kucheria wrote:
> Larry,
> 
> Could you also please attach the output of the script on your test platform?

It is attached (there are still debugging printfs in it).

> 
> Regards,
> Amit

Larry

> 
> On Mon, Mar 9, 2015 at 3:55 AM, Larry Bassel <larry.bas...@linaro.org> wrote:
> > Add test which verifies capacity calculation on arm
> > architecture platforms.
> >
> > Since there isn't yet a similar calculation done
> > for arm64 platforms, this architecture isn't supported
> > by this test (at least as of now).
> >
> > Signed-off-by: Larry Bassel <larry.bas...@linaro.org>
> > ---
> >  cputopology/cputopology_04.sh  | 137 
> > +++++++++++++++++++++++++++++++++++++++++
> >  cputopology/cputopology_04.txt |   1 +
> >  2 files changed, 138 insertions(+)
> >  create mode 100755 cputopology/cputopology_04.sh
> >  create mode 100644 cputopology/cputopology_04.txt
> >
> > diff --git a/cputopology/cputopology_04.sh b/cputopology/cputopology_04.sh
> > new file mode 100755
> > index 0000000..26f611c
> > --- /dev/null
> > +++ b/cputopology/cputopology_04.sh
> > @@ -0,0 +1,137 @@
> > +#!/bin/bash
> > +#
> > +# 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_04
> > +
> > +source ../include/functions.sh
> > +
> > +calc_freq()
> > +{
> > +    byte1=$1
> > +    byte2=$2
> > +    byte3=$3
> > +    byte4=$4
> > +    freq=$((byte1*0x1000000+byte2*0x10000+byte3*0x100+byte4))
> > +}
> > +
> > +set_eff() {
> > +    type=$1
> > +
> > +    case $type in
> > +        arm,cortex-a15) eff=3891 ;;
> > +        arm,cortex-a7)  eff=2048 ;;
> > +        * ) eff=1024 ;;
> > +    esac
> > +}
> > +
> > +calc_mid_capacity()
> > +{
> > +    dt_cpus=$(ls /sys/firmware/devicetree/base/cpus | grep "cpu@[0-9].*")
> > +    min_capacity=$((0xffffffff))
> > +    max_capacity=0
> > +    sched_capacity_shift=10
> > +
> > +    for dt_cpu in $dt_cpus; do
> > +        if [ ! -f 
> > /sys/firmware/devicetree/base/cpus/$dt_cpu/clock-frequency ]; then
> > +           log_skip "no clock frequency file present"
> > +           return
> > +        fi
> > +        if [ ! -f /sys/firmware/devicetree/base/cpus/$dt_cpu/compatible ]; 
> > then
> > +           log_skip "no compatible file present"
> > +           return
> > +        fi
> > +        filename=/sys/firmware/devicetree/base/cpus/$dt_cpu/clock-frequency
> > +        echo "clock frequency file: $filename"
> > +        bytes=$(od -t u1 -A n $filename)
> > +        calc_freq $bytes
> > +        echo "clock frequency: $freq"
> > +        cpu_type=$(cat 
> > /sys/firmware/devicetree/base/cpus/$dt_cpu/compatible)
> > +       echo "cpu type: $cpu_type"
> > +       set_eff $cpu_type
> > +       echo "efficiency: $eff"
> > +       capacity=$((($freq>>20)*$eff))
> > +       echo "capacity: $capacity"
> > +       if [ $capacity -gt $max_capacity ]; then
> > +           max_capacity=$capacity
> > +       fi
> > +       if [ $capacity -lt $min_capacity ]; then
> > +           min_capacity=$capacity
> > +       fi
> > +        if [ $(((4 * $max_capacity))) -lt $(((3 * ($max_capacity + 
> > $min_capacity)))) ]; then
> > +                middle_capacity=$((($min_capacity + 
> > $max_capacity)>>($sched_capacity_shift+1)))
> > +        else
> > +                middle_capacity=$(((($max_capacity / 
> > 3)>>($sched_capacity_shift-1))+1))
> > +        fi
> > +       echo "min capacity: $min_capacity max: $max_capacity middle: 
> > $middle_capacity"
> > +    done
> > +}
> > +
> > +cpu_num=0
> > +
> > +verify_cpu_capacity()
> > +{
> > +    for dt_cpu in $dt_cpus; do
> > +        if [ ! -f 
> > /sys/firmware/devicetree/base/cpus/$dt_cpu/clock-frequency ]; then
> > +           log_skip "no clock frequency file present"
> > +           return
> > +        fi
> > +        if [ ! -f /sys/firmware/devicetree/base/cpus/$dt_cpu/compatible ]; 
> > then
> > +           log_skip "no compatible file present"
> > +           return
> > +        fi
> > +        filename=/sys/firmware/devicetree/base/cpus/$dt_cpu/clock-frequency
> > +        echo "clock frequency file: $filename"
> > +        bytes=$(od -t u1 -A n $filename)
> > +        calc_freq $bytes
> > +        echo "frequency: $freq"
> > +        cpu_type=$(cat 
> > /sys/firmware/devicetree/base/cpus/$dt_cpu/compatible)
> > +       echo "cpu type: $cpu_type"
> > +       set_eff $cpu_type
> > +       echo "efficiency: $eff"
> > +       capacity=$((($freq>>20)*$eff/$middle_capacity))
> > +       expected_capacity_string=$(dmesg | grep "CPU$cpu_num: update 
> > cpu_capacity")
> > +       expected_capacity=${expected_capacity_string##*cpu_capacity}
> > +       echo "cpu num: $cpu_num capacity $capacity expected capacity 
> > $expected_capacity"
> > +       check "expected capacity for cpu$cpu_num equal to computed 
> > capacity" "test $expected_capacity -eq $capacity"
> > +
> > +       cpu_num=$((cpu_num+1))
> > +    done
> > +}
> > +
> > +verify_capacity()
> > +{
> > +    if ! [ -d /sys/firmware/devicetree/base/cpus ]; then
> > +       log_skip "no cpus directory present"
> > +       return
> > +    fi
> > +
> > +    calc_mid_capacity
> > +    dt_cpus=$(ls -1 /sys/firmware/devicetree/base/cpus | egrep 
> > "cpu@.{1,2}$")
> > +    verify_cpu_capacity
> > +    dt_cpus=$(ls -1 /sys/firmware/devicetree/base/cpus | egrep 
> > "cpu@.{3,4}$")
> > +    verify_cpu_capacity
> > +}
> > +
> > +verify_capacity || exit 1
> > +test_status_show
> > diff --git a/cputopology/cputopology_04.txt b/cputopology/cputopology_04.txt
> > new file mode 100644
> > index 0000000..36647db
> > --- /dev/null
> > +++ b/cputopology/cputopology_04.txt
> > @@ -0,0 +1 @@
> > +test capacity calculation
> > --
> > 1.8.3.2
> >
###
### cputopology_04:
### test capacity calculation
### 
https://wiki.linaro.org/WorkingGroups/PowerManagement/Resources/TestSuite/PmQaSpecification#cputopology_04
###
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@0/clock-frequency
clock frequency: 1800000000
cpu type: arm,cortex-a15
efficiency: 3891
capacity: 6676956
min capacity: 6676956 max: 6676956 middle: 6520
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@1/clock-frequency
clock frequency: 1800000000
cpu type: arm,cortex-a15
efficiency: 3891
capacity: 6676956
min capacity: 6676956 max: 6676956 middle: 6520
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@100/clock-frequency
clock frequency: 1000000000
cpu type: arm,cortex-a7
efficiency: 2048
capacity: 1951744
min capacity: 1951744 max: 6676956 middle: 4347
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@101/clock-frequency
clock frequency: 1000000000
cpu type: arm,cortex-a7
efficiency: 2048
capacity: 1951744
min capacity: 1951744 max: 6676956 middle: 4347
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@102/clock-frequency
clock frequency: 1000000000
cpu type: arm,cortex-a7
efficiency: 2048
capacity: 1951744
min capacity: 1951744 max: 6676956 middle: 4347
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@103/clock-frequency
clock frequency: 1000000000
cpu type: arm,cortex-a7
efficiency: 2048
capacity: 1951744
min capacity: 1951744 max: 6676956 middle: 4347
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@2/clock-frequency
clock frequency: 1800000000
cpu type: arm,cortex-a15
efficiency: 3891
capacity: 6676956
min capacity: 1951744 max: 6676956 middle: 4347
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@3/clock-frequency
clock frequency: 1800000000
cpu type: arm,cortex-a15
efficiency: 3891
capacity: 6676956
min capacity: 1951744 max: 6676956 middle: 4347
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@0/clock-frequency
frequency: 1800000000
cpu type: arm,cortex-a15
efficiency: 3891
cpu num: 0 capacity 1535 expected capacity  1535
cputopology_04.0: checking expected capacity for cpu0 equal to computed 
capacity... Ok
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@1/clock-frequency
frequency: 1800000000
cpu type: arm,cortex-a15
efficiency: 3891
cpu num: 1 capacity 1535 expected capacity  1535
cputopology_04.1: checking expected capacity for cpu1 equal to computed 
capacity... Ok
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@2/clock-frequency
frequency: 1800000000
cpu type: arm,cortex-a15
efficiency: 3891
cpu num: 2 capacity 1535 expected capacity  1535
cputopology_04.2: checking expected capacity for cpu2 equal to computed 
capacity... Ok
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@3/clock-frequency
frequency: 1800000000
cpu type: arm,cortex-a15
efficiency: 3891
cpu num: 3 capacity 1535 expected capacity  1535
cputopology_04.3: checking expected capacity for cpu3 equal to computed 
capacity... Ok
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@100/clock-frequency
frequency: 1000000000
cpu type: arm,cortex-a7
efficiency: 2048
cpu num: 4 capacity 448 expected capacity  448
cputopology_04.4: checking expected capacity for cpu4 equal to computed 
capacity... Ok
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@101/clock-frequency
frequency: 1000000000
cpu type: arm,cortex-a7
efficiency: 2048
cpu num: 5 capacity 448 expected capacity  448
cputopology_04.5: checking expected capacity for cpu5 equal to computed 
capacity... Ok
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@102/clock-frequency
frequency: 1000000000
cpu type: arm,cortex-a7
efficiency: 2048
cpu num: 6 capacity 448 expected capacity  448
cputopology_04.6: checking expected capacity for cpu6 equal to computed 
capacity... Ok
clock frequency file: /sys/firmware/devicetree/base/cpus/cpu@103/clock-frequency
frequency: 1000000000
cpu type: arm,cortex-a7
efficiency: 2048
cpu num: 7 capacity 448 expected capacity  448
cputopology_04.7: checking expected capacity for cpu7 equal to computed 
capacity... Ok
 
cputopology_04: pass

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to