Gentle ping and friendly reminder that I need someone to ack Larry's
cpu capacity script before I can merge it :)

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