Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3#please run as root
4
5#we need 256M, below is the size in kB
6needmem=262144
7mnt=./huge
8exitcode=0
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`
24 tries=2
25 while [ $tries -gt 0 ] && [ $freepgs -lt $needpgs ]; do
26 lackpgs=$(( $needpgs - $freepgs ))
27 echo 3 > /proc/sys/vm/drop_caches
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
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
44 fi
45else
46 echo "no hugetlbfs support in kernel?"
47 exit 1
48fi
49
50mkdir $mnt
51mount -t hugetlbfs none $mnt
52
53echo "---------------------"
54echo "running hugepage-mmap"
55echo "---------------------"
56./hugepage-mmap
57if [ $? -ne 0 ]; then
58 echo "[FAIL]"
59 exitcode=1
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 "--------------------"
69echo "running hugepage-shm"
70echo "--------------------"
71./hugepage-shm
72if [ $? -ne 0 ]; then
73 echo "[FAIL]"
74 exitcode=1
75else
76 echo "[PASS]"
77fi
78echo $shmmax > /proc/sys/kernel/shmmax
79echo $shmall > /proc/sys/kernel/shmall
80
81echo "-------------------"
82echo "running map_hugetlb"
83echo "-------------------"
84./map_hugetlb
85if [ $? -ne 0 ]; then
86 echo "[FAIL]"
87 exitcode=1
88else
89 echo "[PASS]"
90fi
91
92echo "NOTE: The above hugetlb tests provide minimal coverage. Use"
93echo " https://github.com/libhugetlbfs/libhugetlbfs.git for"
94echo " hugetlb regression testing."
95
96echo "-------------------"
97echo "running userfaultfd"
98echo "-------------------"
99./userfaultfd anon 128 32
100if [ $? -ne 0 ]; then
101 echo "[FAIL]"
102 exitcode=1
103else
104 echo "[PASS]"
105fi
106
107echo "---------------------------"
108echo "running userfaultfd_hugetlb"
109echo "---------------------------"
110# 256MB total huge pages == 128MB src and 128MB dst
111./userfaultfd hugetlb 128 32 $mnt/ufd_test_file
112if [ $? -ne 0 ]; then
113 echo "[FAIL]"
114 exitcode=1
115else
116 echo "[PASS]"
117fi
118rm -f $mnt/ufd_test_file
119
120echo "-------------------------"
121echo "running userfaultfd_shmem"
122echo "-------------------------"
123./userfaultfd shmem 128 32
124if [ $? -ne 0 ]; then
125 echo "[FAIL]"
126 exitcode=1
127else
128 echo "[PASS]"
129fi
130
131#cleanup
132umount $mnt
133rm -rf $mnt
134echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
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
147echo "----------------------"
148echo "running on-fault-limit"
149echo "----------------------"
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
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
180exit $exitcode