• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3#please run as root
4
5# Kselftest framework requirement - SKIP code is 4.
6ksft_skip=4
7
8mnt=./huge
9exitcode=0
10
11##get huge pagesize and freepages from /proc/meminfo
12#while read name size unit; do
13#	if [ "$name" = "HugePages_Free:" ]; then
14#		freepgs=$size
15#	fi
16#	if [ "$name" = "Hugepagesize:" ]; then
17#		hpgsize_KB=$size
18#	fi
19#done < /proc/meminfo
20#
21## Simple hugetlbfs tests have a hardcoded minimum requirement of
22## huge pages totaling 256MB (262144KB) in size.  The userfaultfd
23## hugetlb test requires a minimum of 2 * nr_cpus huge pages.  Take
24## both of these requirements into account and attempt to increase
25## number of huge pages available.
26#nr_cpus=$(nproc)
27#hpgsize_MB=$((hpgsize_KB / 1024))
28#half_ufd_size_MB=$((((nr_cpus * hpgsize_MB + 127) / 128) * 128))
29#needmem_KB=$((half_ufd_size_MB * 2 * 1024))
30#
31##set proper nr_hugepages
32#if [ -n "$freepgs" ] && [ -n "$hpgsize_KB" ]; then
33#	nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
34#	needpgs=$((needmem_KB / hpgsize_KB))
35#	tries=2
36#	while [ $tries -gt 0 ] && [ $freepgs -lt $needpgs ]; do
37#		lackpgs=$(( $needpgs - $freepgs ))
38#		echo 3 > /proc/sys/vm/drop_caches
39#		echo $(( $lackpgs + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
40#		if [ $? -ne 0 ]; then
41#			echo "Please run this test as root"
42#			exit $ksft_skip
43#		fi
44#		while read name size unit; do
45#			if [ "$name" = "HugePages_Free:" ]; then
46#				freepgs=$size
47#			fi
48#		done < /proc/meminfo
49#		tries=$((tries - 1))
50#	done
51#	if [ $freepgs -lt $needpgs ]; then
52#		printf "Not enough huge pages available (%d < %d)\n" \
53#		       $freepgs $needpgs
54#		exit 1
55#	fi
56#else
57#	echo "no hugetlbfs support in kernel?"
58#	exit 1
59#fi
60#
61#mkdir $mnt
62#mount -t hugetlbfs none $mnt
63#
64#echo "---------------------"
65#echo "running hugepage-mmap"
66#echo "---------------------"
67#./hugepage-mmap
68#if [ $? -ne 0 ]; then
69#	echo "[FAIL]"
70#	exitcode=1
71#else
72#	echo "[PASS]"
73#fi
74#
75#shmmax=`cat /proc/sys/kernel/shmmax`
76#shmall=`cat /proc/sys/kernel/shmall`
77#echo 268435456 > /proc/sys/kernel/shmmax
78#echo 4194304 > /proc/sys/kernel/shmall
79#echo "--------------------"
80#echo "running hugepage-shm"
81#echo "--------------------"
82#./hugepage-shm
83#if [ $? -ne 0 ]; then
84#	echo "[FAIL]"
85#	exitcode=1
86#else
87#	echo "[PASS]"
88#fi
89#echo $shmmax > /proc/sys/kernel/shmmax
90#echo $shmall > /proc/sys/kernel/shmall
91#
92#echo "-------------------"
93#echo "running map_hugetlb"
94#echo "-------------------"
95#./map_hugetlb
96#if [ $? -ne 0 ]; then
97#	echo "[FAIL]"
98#	exitcode=1
99#else
100#	echo "[PASS]"
101#fi
102#
103#echo "NOTE: The above hugetlb tests provide minimal coverage.  Use"
104#echo "      https://github.com/libhugetlbfs/libhugetlbfs.git for"
105#echo "      hugetlb regression testing."
106#
107#echo "-------------------"
108#echo "running userfaultfd"
109#echo "-------------------"
110#./userfaultfd anon 128 32
111#if [ $? -ne 0 ]; then
112#	echo "[FAIL]"
113#	exitcode=1
114#else
115#	echo "[PASS]"
116#fi
117#
118#echo "---------------------------"
119#echo "running userfaultfd_hugetlb"
120#echo "---------------------------"
121## Test requires source and destination huge pages.  Size of source
122## (half_ufd_size_MB) is passed as argument to test.
123#./userfaultfd hugetlb $half_ufd_size_MB 32 $mnt/ufd_test_file
124#if [ $? -ne 0 ]; then
125#	echo "[FAIL]"
126#	exitcode=1
127#else
128#	echo "[PASS]"
129#fi
130#rm -f $mnt/ufd_test_file
131#
132#echo "-------------------------"
133#echo "running userfaultfd_shmem"
134#echo "-------------------------"
135#./userfaultfd shmem 128 32
136#if [ $? -ne 0 ]; then
137#	echo "[FAIL]"
138#	exitcode=1
139#else
140#	echo "[PASS]"
141#fi
142#
143##cleanup
144#umount $mnt
145#rm -rf $mnt
146#echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
147#
148#echo "-----------------------"
149#echo "running compaction_test"
150#echo "-----------------------"
151#./compaction_test
152#if [ $? -ne 0 ]; then
153#	echo "[FAIL]"
154#	exitcode=1
155#else
156#	echo "[PASS]"
157#fi
158
159echo "----------------------"
160echo "running on-fault-limit"
161echo "----------------------"
162sudo -u nobody ./on-fault-limit
163if [ $? -ne 0 ]; then
164	echo "[FAIL]"
165	exitcode=1
166else
167	echo "[PASS]"
168fi
169
170echo "--------------------"
171echo "running map_populate"
172echo "--------------------"
173./map_populate
174if [ $? -ne 0 ]; then
175	echo "[FAIL]"
176	exitcode=1
177else
178	echo "[PASS]"
179fi
180
181echo "--------------------"
182echo "running mlock2-tests"
183echo "--------------------"
184./mlock2-tests
185if [ $? -ne 0 ]; then
186	echo "[FAIL]"
187	exitcode=1
188else
189	echo "[PASS]"
190fi
191
192echo "-----------------------------"
193echo "running virtual_address_range"
194echo "-----------------------------"
195./virtual_address_range
196if [ $? -ne 0 ]; then
197	echo "[FAIL]"
198	exitcode=1
199else
200	echo "[PASS]"
201fi
202
203echo "-----------------------------"
204echo "running virtual address 128TB switch test"
205echo "-----------------------------"
206./va_128TBswitch
207if [ $? -ne 0 ]; then
208    echo "[FAIL]"
209    exitcode=1
210else
211    echo "[PASS]"
212fi
213
214exit $exitcode
215