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