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
+
+