License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[linux-2.6-block.git] / tools / testing / selftests / vm / run_vmtests
CommitLineData
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
6needmem=262144
7mnt=./huge
51a1d165 8exitcode=0
f0f57b2b
DY
9
10#get pagesize and freepages from /proc/meminfo
11while 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
18done < /proc/meminfo
19
20#set proper nr_hugepages
21if [ -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
45else
46 echo "no hugetlbfs support in kernel?"
47 exit 1
48fi
49
50mkdir $mnt
51mount -t hugetlbfs none $mnt
52
2b8713e1 53echo "---------------------"
ce8283d5 54echo "running hugepage-mmap"
2b8713e1 55echo "---------------------"
f0f57b2b
DY
56./hugepage-mmap
57if [ $? -ne 0 ]; then
58 echo "[FAIL]"
51a1d165 59 exitcode=1
f0f57b2b
DY
60else
61 echo "[PASS]"
62fi
63
64shmmax=`cat /proc/sys/kernel/shmmax`
65shmall=`cat /proc/sys/kernel/shmall`
66echo 268435456 > /proc/sys/kernel/shmmax
67echo 4194304 > /proc/sys/kernel/shmall
68echo "--------------------"
ce8283d5 69echo "running hugepage-shm"
f0f57b2b
DY
70echo "--------------------"
71./hugepage-shm
72if [ $? -ne 0 ]; then
73 echo "[FAIL]"
51a1d165 74 exitcode=1
f0f57b2b
DY
75else
76 echo "[PASS]"
77fi
78echo $shmmax > /proc/sys/kernel/shmmax
79echo $shmall > /proc/sys/kernel/shmall
80
2b8713e1 81echo "-------------------"
ce8283d5 82echo "running map_hugetlb"
2b8713e1 83echo "-------------------"
f0f57b2b
DY
84./map_hugetlb
85if [ $? -ne 0 ]; then
86 echo "[FAIL]"
51a1d165 87 exitcode=1
f0f57b2b
DY
88else
89 echo "[PASS]"
90fi
91
fd5a9ecd
MK
92echo "NOTE: The above hugetlb tests provide minimal coverage. Use"
93echo " https://github.com/libhugetlbfs/libhugetlbfs.git for"
94echo " hugetlb regression testing."
95
2b8713e1 96echo "-------------------"
c47174fc 97echo "running userfaultfd"
2b8713e1 98echo "-------------------"
b6ad1976 99./userfaultfd anon 128 32
c47174fc
AA
100if [ $? -ne 0 ]; then
101 echo "[FAIL]"
102 exitcode=1
103else
104 echo "[PASS]"
105fi
106
2b8713e1 107echo "---------------------------"
9903bd7b 108echo "running userfaultfd_hugetlb"
2b8713e1 109echo "---------------------------"
ff80d915 110# 256MB total huge pages == 128MB src and 128MB dst
b6ad1976 111./userfaultfd hugetlb 128 32 $mnt/ufd_test_file
9903bd7b
MK
112if [ $? -ne 0 ]; then
113 echo "[FAIL]"
114 exitcode=1
115else
116 echo "[PASS]"
117fi
118rm -f $mnt/ufd_test_file
119
2b8713e1 120echo "-------------------------"
419624da 121echo "running userfaultfd_shmem"
2b8713e1 122echo "-------------------------"
b6ad1976 123./userfaultfd shmem 128 32
419624da
MR
124if [ $? -ne 0 ]; then
125 echo "[FAIL]"
126 exitcode=1
127else
128 echo "[PASS]"
129fi
130
f0f57b2b
DY
131#cleanup
132umount $mnt
133rm -rf $mnt
134echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
bd67d5c1
SJ
135
136echo "-----------------------"
137echo "running compaction_test"
138echo "-----------------------"
139./compaction_test
140if [ $? -ne 0 ]; then
141 echo "[FAIL]"
142 exitcode=1
143else
144 echo "[PASS]"
145fi
146
2b8713e1 147echo "----------------------"
b3b0d09c 148echo "running on-fault-limit"
2b8713e1 149echo "----------------------"
b3b0d09c
EM
150sudo -u nobody ./on-fault-limit
151if [ $? -ne 0 ]; then
152 echo "[FAIL]"
153 exitcode=1
154else
155 echo "[PASS]"
156fi
157
158echo "--------------------"
159echo "running mlock2-tests"
160echo "--------------------"
161./mlock2-tests
162if [ $? -ne 0 ]; then
163 echo "[FAIL]"
164 exitcode=1
165else
166 echo "[PASS]"
167fi
168
4e5ce33c
AK
169echo "-----------------------------"
170echo "running virtual_address_range"
171echo "-----------------------------"
172./virtual_address_range
173if [ $? -ne 0 ]; then
174 echo "[FAIL]"
175 exitcode=1
176else
177 echo "[PASS]"
178fi
179
51a1d165 180exit $exitcode