On 1 April 2015 at 17:41, Lisa Nguyen <lisa.ngu...@linaro.org> wrote:
> Gentle ping and friendly reminder that I need someone to ack Larry's
> cpu capacity script before I can merge it :)

I'm not sure that the beg of the output file which displays the steps
to compute capacity is really necessary (min, max middle value). We
are only interested in final result:
cpu num: X capacity YYYY expected capacity  ZZZZ
cputopology_04.0: checking expected capacity for cpuX equal to
computed capacity... Ok

Apart from that it's ok for me

>
> On 24 March 2015 at 08:12, Larry Bassel <larry.bas...@linaro.org> wrote:
>> 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
>>> >
_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to