]> git.karo-electronics.de Git - karo-tx-linux.git/blob - tools/testing/selftests/vm/run_vmtests
Merge tag 'linux-kselftest-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.git] / tools / testing / selftests / vm / run_vmtests
1 #!/bin/bash
2 #please run as root
3
4 #we need 256M, below is the size in kB
5 needmem=262144
6 mnt=./huge
7 exitcode=0
8
9 #get pagesize and freepages from /proc/meminfo
10 while read name size unit; do
11         if [ "$name" = "HugePages_Free:" ]; then
12                 freepgs=$size
13         fi
14         if [ "$name" = "Hugepagesize:" ]; then
15                 pgsize=$size
16         fi
17 done < /proc/meminfo
18
19 #set proper nr_hugepages
20 if [ -n "$freepgs" ] && [ -n "$pgsize" ]; then
21         nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
22         needpgs=`expr $needmem / $pgsize`
23         tries=2
24         while [ $tries -gt 0 ] && [ $freepgs -lt $needpgs ]; do
25                 lackpgs=$(( $needpgs - $freepgs ))
26                 echo 3 > /proc/sys/vm/drop_caches
27                 echo $(( $lackpgs + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
28                 if [ $? -ne 0 ]; then
29                         echo "Please run this test as root"
30                         exit 1
31                 fi
32                 while read name size unit; do
33                         if [ "$name" = "HugePages_Free:" ]; then
34                                 freepgs=$size
35                         fi
36                 done < /proc/meminfo
37                 tries=$((tries - 1))
38         done
39         if [ $freepgs -lt $needpgs ]; then
40                 printf "Not enough huge pages available (%d < %d)\n" \
41                        $freepgs $needpgs
42                 exit 1
43         fi
44 else
45         echo "no hugetlbfs support in kernel?"
46         exit 1
47 fi
48
49 mkdir $mnt
50 mount -t hugetlbfs none $mnt
51
52 echo "---------------------"
53 echo "running hugepage-mmap"
54 echo "---------------------"
55 ./hugepage-mmap
56 if [ $? -ne 0 ]; then
57         echo "[FAIL]"
58         exitcode=1
59 else
60         echo "[PASS]"
61 fi
62
63 shmmax=`cat /proc/sys/kernel/shmmax`
64 shmall=`cat /proc/sys/kernel/shmall`
65 echo 268435456 > /proc/sys/kernel/shmmax
66 echo 4194304 > /proc/sys/kernel/shmall
67 echo "--------------------"
68 echo "running hugepage-shm"
69 echo "--------------------"
70 ./hugepage-shm
71 if [ $? -ne 0 ]; then
72         echo "[FAIL]"
73         exitcode=1
74 else
75         echo "[PASS]"
76 fi
77 echo $shmmax > /proc/sys/kernel/shmmax
78 echo $shmall > /proc/sys/kernel/shmall
79
80 echo "-------------------"
81 echo "running map_hugetlb"
82 echo "-------------------"
83 ./map_hugetlb
84 if [ $? -ne 0 ]; then
85         echo "[FAIL]"
86         exitcode=1
87 else
88         echo "[PASS]"
89 fi
90
91 echo "NOTE: The above hugetlb tests provide minimal coverage.  Use"
92 echo "      https://github.com/libhugetlbfs/libhugetlbfs.git for"
93 echo "      hugetlb regression testing."
94
95 echo "-------------------"
96 echo "running userfaultfd"
97 echo "-------------------"
98 ./userfaultfd anon 128 32
99 if [ $? -ne 0 ]; then
100         echo "[FAIL]"
101         exitcode=1
102 else
103         echo "[PASS]"
104 fi
105
106 echo "---------------------------"
107 echo "running userfaultfd_hugetlb"
108 echo "---------------------------"
109 # 256MB total huge pages == 128MB src and 128MB dst
110 ./userfaultfd hugetlb 128 32 $mnt/ufd_test_file
111 if [ $? -ne 0 ]; then
112         echo "[FAIL]"
113         exitcode=1
114 else
115         echo "[PASS]"
116 fi
117 rm -f $mnt/ufd_test_file
118
119 echo "-------------------------"
120 echo "running userfaultfd_shmem"
121 echo "-------------------------"
122 ./userfaultfd shmem 128 32
123 if [ $? -ne 0 ]; then
124         echo "[FAIL]"
125         exitcode=1
126 else
127         echo "[PASS]"
128 fi
129
130 #cleanup
131 umount $mnt
132 rm -rf $mnt
133 echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
134
135 echo "-----------------------"
136 echo "running compaction_test"
137 echo "-----------------------"
138 ./compaction_test
139 if [ $? -ne 0 ]; then
140         echo "[FAIL]"
141         exitcode=1
142 else
143         echo "[PASS]"
144 fi
145
146 echo "----------------------"
147 echo "running on-fault-limit"
148 echo "----------------------"
149 sudo -u nobody ./on-fault-limit
150 if [ $? -ne 0 ]; then
151         echo "[FAIL]"
152         exitcode=1
153 else
154         echo "[PASS]"
155 fi
156
157 echo "--------------------"
158 echo "running mlock2-tests"
159 echo "--------------------"
160 ./mlock2-tests
161 if [ $? -ne 0 ]; then
162         echo "[FAIL]"
163         exitcode=1
164 else
165         echo "[PASS]"
166 fi
167
168 echo "-----------------------------"
169 echo "running virtual_address_range"
170 echo "-----------------------------"
171 ./virtual_address_range
172 if [ $? -ne 0 ]; then
173         echo "[FAIL]"
174         exitcode=1
175 else
176         echo "[PASS]"
177 fi
178
179 exit $exitcode