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