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