b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | #NOTE: dvc_update_volt.sh is set as root-only executable in read only directory /sbin/ |
| 4 | #NOTE: better to move dvc_update_volt.sh to writtable directory, such /data |
| 5 | #NOTE: better to remove dvc_update_volt.sh after doing system test |
| 6 | #NOTE: be careful to check if dvc_update_volt.sh is executed correctly from dmesg log |
| 7 | #NOTE: dvc_update_volt.sh is to reduce voltage before doing stress test |
| 8 | #NOTE: default is reduce 25mv in dvc_update_volt.sh, can change it to other value if needed |
| 9 | |
| 10 | |
| 11 | #reduce_volt=1 |
| 12 | |
| 13 | trap 'onCtrlC' INT |
| 14 | function onCtrlC () { |
| 15 | echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos |
| 16 | echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos |
| 17 | echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos |
| 18 | echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos |
| 19 | [ -e /data/stresstfile ] && rm /data/stresstfile |
| 20 | echo "Exit 0 on Ctrl+C" > /dev/kmsg |
| 21 | exit 0 |
| 22 | } |
| 23 | |
| 24 | if [ -z $1 -o -z $2 ]; then |
| 25 | echo "!!!!!!!!no runtime_sec and test idx specified" > /dev/kmsg |
| 26 | exit 1 |
| 27 | fi |
| 28 | |
| 29 | echo "runtime " $1 > /dev/kmsg |
| 30 | echo "stress test " $2 > /dev/kmsg |
| 31 | result=0 |
| 32 | # $2: 0 - mem test 1 - mem+flash test |
| 33 | if [ $2 -eq 0 ]; then |
| 34 | # set cpufreq max to 416000 and ddrfreq min to 2000000 |
| 35 | echo strestestcpu 416000 > /sys/power/cpu_freq_max_pm_qos |
| 36 | echo strestestcpu 416000 > /sys/power/cpu_freq_min_pm_qos |
| 37 | echo strestestddr 2000000 > /sys/power/ddr_devfreq_max_pm_qos |
| 38 | echo strestestddr 2000000 > /sys/power/ddr_devfreq_min_pm_qos |
| 39 | |
| 40 | if [ "$reduce_volt" == "1" ] |
| 41 | then |
| 42 | serial_atcmd at+cfun=0 |
| 43 | sync |
| 44 | echo 3 > /proc/sys/vm/drop_caches |
| 45 | [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub |
| 46 | fi |
| 47 | |
| 48 | free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'` |
| 49 | echo "Free_KB:" $free_mem_kbytes > /dev/kmsg |
| 50 | #larger than 11MB |
| 51 | if [ $free_mem_kbytes -gt 11264 ]; then |
| 52 | stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| 53 | result=$? |
| 54 | else |
| 55 | stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| 56 | result=$? |
| 57 | fi |
| 58 | echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos |
| 59 | echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos |
| 60 | echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos |
| 61 | echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos |
| 62 | if [ "$reduce_volt" == "1" ] |
| 63 | then |
| 64 | [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore |
| 65 | fi |
| 66 | elif [ $2 -eq 1 ]; then |
| 67 | 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 |
| 68 | result=$? |
| 69 | elif [ $2 -eq 2 ]; then |
| 70 | loop=1 |
| 71 | while [ $loop -le $1 ] |
| 72 | do |
| 73 | [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0 |
| 74 | fs_test 0 7 0 |
| 75 | result=$? |
| 76 | if [ $result -ne 0 ]; then |
| 77 | echo "==== FLASH TEST FAILED ON LOOP" $loop > /dev/kmsg |
| 78 | [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0 |
| 79 | exit 1 |
| 80 | fi |
| 81 | loop=$((loop+1)) |
| 82 | echo "##FLASH test loop" $loop "done" > /dev/kmsg |
| 83 | [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0 |
| 84 | done |
| 85 | [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0 |
| 86 | echo "==== ALL FLASH TEST DONE, PASS" > /dev/kmsg |
| 87 | exit 0 |
| 88 | elif [ $2 -eq 3 ]; then |
| 89 | if [ "$reduce_volt" == "1" ] |
| 90 | then |
| 91 | serial_atcmd at+cfun=0 |
| 92 | sync |
| 93 | echo 3 > /proc/sys/vm/drop_caches |
| 94 | [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub |
| 95 | fi |
| 96 | # set cpufreq max to 2000000 and ddrfreq min to 2000000 |
| 97 | echo strestestcpu 2000000 > /sys/power/cpu_freq_max_pm_qos |
| 98 | echo strestestcpu 2000000 > /sys/power/cpu_freq_min_pm_qos |
| 99 | echo strestestddr 2000000 > /sys/power/ddr_devfreq_max_pm_qos |
| 100 | echo strestestddr 2000000 > /sys/power/ddr_devfreq_min_pm_qos |
| 101 | free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'` |
| 102 | echo "Free_KB:" $free_mem_kbytes > /dev/kmsg |
| 103 | #larger than 11MB |
| 104 | if [ $free_mem_kbytes -gt 11264 ]; then |
| 105 | stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| 106 | result=$? |
| 107 | else |
| 108 | stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| 109 | result=$? |
| 110 | fi |
| 111 | echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos |
| 112 | echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos |
| 113 | echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos |
| 114 | echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos |
| 115 | |
| 116 | if [ "$reduce_volt" == "1" ] |
| 117 | then |
| 118 | [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore |
| 119 | fi |
| 120 | elif [ $2 -eq 4 ]; then |
| 121 | if [ "$reduce_volt" == "1" ] |
| 122 | then |
| 123 | serial_atcmd at+cfun=0 |
| 124 | sync |
| 125 | echo 3 > /proc/sys/vm/drop_caches |
| 126 | [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub |
| 127 | fi |
| 128 | # set cpufreq max to 416000 and ddrfreq min to 266000 |
| 129 | echo strestestcpu 416000 > /sys/power/cpu_freq_max_pm_qos |
| 130 | echo strestestcpu 416000 > /sys/power/cpu_freq_min_pm_qos |
| 131 | echo strestestddr 266000 > /sys/power/ddr_devfreq_max_pm_qos |
| 132 | echo strestestddr 266000 > /sys/power/ddr_devfreq_min_pm_qos |
| 133 | free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'` |
| 134 | echo "Free_KB:" $free_mem_kbytes > /dev/kmsg |
| 135 | #larger than 11MB |
| 136 | if [ $free_mem_kbytes -gt 11264 ]; then |
| 137 | stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| 138 | result=$? |
| 139 | else |
| 140 | stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| 141 | result=$? |
| 142 | fi |
| 143 | echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos |
| 144 | echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos |
| 145 | echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos |
| 146 | echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos |
| 147 | |
| 148 | if [ "$reduce_volt" == "1" ] |
| 149 | then |
| 150 | [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore |
| 151 | fi |
| 152 | else |
| 153 | echo "==== unsupported test" > /dev/kmsg |
| 154 | $result=1 |
| 155 | fi |
| 156 | |
| 157 | if [ $result -eq 0 ]; then |
| 158 | echo "======stress test " $2 " ok" > /dev/kmsg |
| 159 | [ -e /data/stresstfile ] && rm /data/stresstfile |
| 160 | exit 0 |
| 161 | else |
| 162 | echo "======stress test " $2 " fail" > /dev/kmsg |
| 163 | [ -e /data/stresstfile ] && rm /data/stresstfile |
| 164 | exit 1 |
| 165 | fi |
| 166 | |
| 167 | |