ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/target/linux/mmp/base-files/sbin/stresstest.sh b/target/linux/mmp/base-files/sbin/stresstest.sh
new file mode 100755
index 0000000..79682eb
--- /dev/null
+++ b/target/linux/mmp/base-files/sbin/stresstest.sh
@@ -0,0 +1,167 @@
+#!/bin/sh
+
+#NOTE: dvc_update_volt.sh is set as root-only executable in read only directory /sbin/
+#NOTE: better to move dvc_update_volt.sh to writtable directory, such /data
+#NOTE: better to remove dvc_update_volt.sh after doing system test
+#NOTE: be careful to check if dvc_update_volt.sh is executed correctly from dmesg log
+#NOTE: dvc_update_volt.sh is to reduce voltage before doing stress test
+#NOTE: default is reduce 25mv in dvc_update_volt.sh, can change it to other value if needed
+
+
+#reduce_volt=1
+
+trap 'onCtrlC' INT
+function onCtrlC () {
+ echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos
+ echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos
+ echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos
+ echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos
+ [ -e /data/stresstfile ] && rm /data/stresstfile
+ echo "Exit 0 on Ctrl+C" > /dev/kmsg
+ exit 0
+}
+
+if [ -z $1 -o -z $2 ]; then
+ echo "!!!!!!!!no runtime_sec and test idx specified" > /dev/kmsg
+ exit 1
+fi
+
+echo "runtime " $1 > /dev/kmsg
+echo "stress test " $2 > /dev/kmsg
+result=0
+# $2: 0 - mem test 1 - mem+flash test
+if [ $2 -eq 0 ]; then
+ # set cpufreq max to 416000 and ddrfreq min to 2000000
+ echo strestestcpu 416000 > /sys/power/cpu_freq_max_pm_qos
+ echo strestestcpu 416000 > /sys/power/cpu_freq_min_pm_qos
+ echo strestestddr 2000000 > /sys/power/ddr_devfreq_max_pm_qos
+ echo strestestddr 2000000 > /sys/power/ddr_devfreq_min_pm_qos
+
+ if [ "$reduce_volt" == "1" ]
+ then
+ serial_atcmd at+cfun=0
+ sync
+ echo 3 > /proc/sys/vm/drop_caches
+ [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub
+ fi
+
+ free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'`
+ echo "Free_KB:" $free_mem_kbytes > /dev/kmsg
+ #larger than 11MB
+ if [ $free_mem_kbytes -gt 11264 ]; then
+ stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
+ result=$?
+ else
+ stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
+ result=$?
+ fi
+ echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos
+ echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos
+ echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos
+ echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos
+ if [ "$reduce_volt" == "1" ]
+ then
+ [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore
+ fi
+elif [ $2 -eq 1 ]; then
+ stresstest -s $1 -C 1 -m 1 -i 1 --max_errors 1 -M 8 --stop_on_errors -l /tmp/stress_log -f /data/stresstfile --filesize 0x200000
+ result=$?
+elif [ $2 -eq 2 ]; then
+ loop=1
+ while [ $loop -le $1 ]
+ do
+ [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0
+ fs_test 0 7 0
+ result=$?
+ if [ $result -ne 0 ]; then
+ echo "==== FLASH TEST FAILED ON LOOP" $loop > /dev/kmsg
+ [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0
+ exit 1
+ fi
+ loop=$((loop+1))
+ echo "##FLASH test loop" $loop "done" > /dev/kmsg
+ [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0
+ done
+ [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0
+ echo "==== ALL FLASH TEST DONE, PASS" > /dev/kmsg
+ exit 0
+elif [ $2 -eq 3 ]; then
+ if [ "$reduce_volt" == "1" ]
+ then
+ serial_atcmd at+cfun=0
+ sync
+ echo 3 > /proc/sys/vm/drop_caches
+ [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub
+ fi
+ # set cpufreq max to 2000000 and ddrfreq min to 2000000
+ echo strestestcpu 2000000 > /sys/power/cpu_freq_max_pm_qos
+ echo strestestcpu 2000000 > /sys/power/cpu_freq_min_pm_qos
+ echo strestestddr 2000000 > /sys/power/ddr_devfreq_max_pm_qos
+ echo strestestddr 2000000 > /sys/power/ddr_devfreq_min_pm_qos
+ free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'`
+ echo "Free_KB:" $free_mem_kbytes > /dev/kmsg
+ #larger than 11MB
+ if [ $free_mem_kbytes -gt 11264 ]; then
+ stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
+ result=$?
+ else
+ stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
+ result=$?
+ fi
+ echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos
+ echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos
+ echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos
+ echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos
+
+ if [ "$reduce_volt" == "1" ]
+ then
+ [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore
+ fi
+elif [ $2 -eq 4 ]; then
+ if [ "$reduce_volt" == "1" ]
+ then
+ serial_atcmd at+cfun=0
+ sync
+ echo 3 > /proc/sys/vm/drop_caches
+ [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub
+ fi
+ # set cpufreq max to 416000 and ddrfreq min to 266000
+ echo strestestcpu 416000 > /sys/power/cpu_freq_max_pm_qos
+ echo strestestcpu 416000 > /sys/power/cpu_freq_min_pm_qos
+ echo strestestddr 266000 > /sys/power/ddr_devfreq_max_pm_qos
+ echo strestestddr 266000 > /sys/power/ddr_devfreq_min_pm_qos
+ free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'`
+ echo "Free_KB:" $free_mem_kbytes > /dev/kmsg
+ #larger than 11MB
+ if [ $free_mem_kbytes -gt 11264 ]; then
+ stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
+ result=$?
+ else
+ stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
+ result=$?
+ fi
+ echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos
+ echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos
+ echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos
+ echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos
+
+ if [ "$reduce_volt" == "1" ]
+ then
+ [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore
+ fi
+else
+ echo "==== unsupported test" > /dev/kmsg
+ $result=1
+fi
+
+if [ $result -eq 0 ]; then
+ echo "======stress test " $2 " ok" > /dev/kmsg
+ [ -e /data/stresstfile ] && rm /data/stresstfile
+ exit 0
+else
+ echo "======stress test " $2 " fail" > /dev/kmsg
+ [ -e /data/stresstfile ] && rm /data/stresstfile
+ exit 1
+fi
+
+