blob: 79682eb9b8edc6d0a6aaccc179f6a2e323c94d61 [file] [log] [blame]
#!/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