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