241 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			241 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash
 | |
| # SPDX-License-Identifier: GPL-2.0
 | |
| #please run as root
 | |
| 
 | |
| # Kselftest framework requirement - SKIP code is 4.
 | |
| ksft_skip=4
 | |
| 
 | |
| mnt=./huge
 | |
| exitcode=0
 | |
| 
 | |
| ##get huge pagesize and freepages from /proc/meminfo
 | |
| #while read name size unit; do
 | |
| #	if [ "$name" = "HugePages_Free:" ]; then
 | |
| #		freepgs=$size
 | |
| #	fi
 | |
| #	if [ "$name" = "Hugepagesize:" ]; then
 | |
| #		hpgsize_KB=$size
 | |
| #	fi
 | |
| #done < /proc/meminfo
 | |
| #
 | |
| ## Simple hugetlbfs tests have a hardcoded minimum requirement of
 | |
| ## huge pages totaling 256MB (262144KB) in size.  The userfaultfd
 | |
| ## hugetlb test requires a minimum of 2 * nr_cpus huge pages.  Take
 | |
| ## both of these requirements into account and attempt to increase
 | |
| ## number of huge pages available.
 | |
| #nr_cpus=$(nproc)
 | |
| #hpgsize_MB=$((hpgsize_KB / 1024))
 | |
| #half_ufd_size_MB=$((((nr_cpus * hpgsize_MB + 127) / 128) * 128))
 | |
| #needmem_KB=$((half_ufd_size_MB * 2 * 1024))
 | |
| #
 | |
| ##set proper nr_hugepages
 | |
| #if [ -n "$freepgs" ] && [ -n "$hpgsize_KB" ]; then
 | |
| #	nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
 | |
| #	needpgs=$((needmem_KB / hpgsize_KB))
 | |
| #	tries=2
 | |
| #	while [ $tries -gt 0 ] && [ $freepgs -lt $needpgs ]; do
 | |
| #		lackpgs=$(( $needpgs - $freepgs ))
 | |
| #		echo 3 > /proc/sys/vm/drop_caches
 | |
| #		echo $(( $lackpgs + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
 | |
| #		if [ $? -ne 0 ]; then
 | |
| #			echo "Please run this test as root"
 | |
| #			exit $ksft_skip
 | |
| #		fi
 | |
| #		while read name size unit; do
 | |
| #			if [ "$name" = "HugePages_Free:" ]; then
 | |
| #				freepgs=$size
 | |
| #			fi
 | |
| #		done < /proc/meminfo
 | |
| #		tries=$((tries - 1))
 | |
| #	done
 | |
| #	if [ $freepgs -lt $needpgs ]; then
 | |
| #		printf "Not enough huge pages available (%d < %d)\n" \
 | |
| #		       $freepgs $needpgs
 | |
| #		exit 1
 | |
| #	fi
 | |
| #else
 | |
| #	echo "no hugetlbfs support in kernel?"
 | |
| #	exit 1
 | |
| #fi
 | |
| #
 | |
| ##filter 64bit architectures
 | |
| #ARCH64STR="arm64 ia64 mips64 parisc64 ppc64 riscv64 s390x sh64 sparc64 x86_64"
 | |
| #if [ -z $ARCH ]; then
 | |
| #  ARCH=`uname -m 2>/dev/null | sed -e 's/aarch64.*/arm64/'`
 | |
| #fi
 | |
| #VADDR64=0
 | |
| #echo "$ARCH64STR" | grep $ARCH && VADDR64=1
 | |
| #
 | |
| #mkdir $mnt
 | |
| #mount -t hugetlbfs none $mnt
 | |
| #
 | |
| #echo "---------------------"
 | |
| #echo "running hugepage-mmap"
 | |
| #echo "---------------------"
 | |
| #./hugepage-mmap
 | |
| #if [ $? -ne 0 ]; then
 | |
| #	echo "[FAIL]"
 | |
| #	exitcode=1
 | |
| #else
 | |
| #	echo "[PASS]"
 | |
| #fi
 | |
| #
 | |
| #shmmax=`cat /proc/sys/kernel/shmmax`
 | |
| #shmall=`cat /proc/sys/kernel/shmall`
 | |
| #echo 268435456 > /proc/sys/kernel/shmmax
 | |
| #echo 4194304 > /proc/sys/kernel/shmall
 | |
| #echo "--------------------"
 | |
| #echo "running hugepage-shm"
 | |
| #echo "--------------------"
 | |
| #./hugepage-shm
 | |
| #if [ $? -ne 0 ]; then
 | |
| #	echo "[FAIL]"
 | |
| #	exitcode=1
 | |
| #else
 | |
| #	echo "[PASS]"
 | |
| #fi
 | |
| #echo $shmmax > /proc/sys/kernel/shmmax
 | |
| #echo $shmall > /proc/sys/kernel/shmall
 | |
| #
 | |
| #echo "-------------------"
 | |
| #echo "running map_hugetlb"
 | |
| #echo "-------------------"
 | |
| #./map_hugetlb
 | |
| #if [ $? -ne 0 ]; then
 | |
| #	echo "[FAIL]"
 | |
| #	exitcode=1
 | |
| #else
 | |
| #	echo "[PASS]"
 | |
| #fi
 | |
| #
 | |
| #echo "NOTE: The above hugetlb tests provide minimal coverage.  Use"
 | |
| #echo "      https://github.com/libhugetlbfs/libhugetlbfs.git for"
 | |
| #echo "      hugetlb regression testing."
 | |
| #
 | |
| #echo "-------------------"
 | |
| #echo "running userfaultfd"
 | |
| #echo "-------------------"
 | |
| #./userfaultfd anon 128 32
 | |
| #if [ $? -ne 0 ]; then
 | |
| #	echo "[FAIL]"
 | |
| #	exitcode=1
 | |
| #else
 | |
| #	echo "[PASS]"
 | |
| #fi
 | |
| #
 | |
| #echo "---------------------------"
 | |
| #echo "running userfaultfd_hugetlb"
 | |
| #echo "---------------------------"
 | |
| ## Test requires source and destination huge pages.  Size of source
 | |
| ## (half_ufd_size_MB) is passed as argument to test.
 | |
| #./userfaultfd hugetlb $half_ufd_size_MB 32 $mnt/ufd_test_file
 | |
| #if [ $? -ne 0 ]; then
 | |
| #	echo "[FAIL]"
 | |
| #	exitcode=1
 | |
| #else
 | |
| #	echo "[PASS]"
 | |
| #fi
 | |
| #rm -f $mnt/ufd_test_file
 | |
| #
 | |
| #echo "-------------------------"
 | |
| #echo "running userfaultfd_shmem"
 | |
| #echo "-------------------------"
 | |
| #./userfaultfd shmem 128 32
 | |
| #if [ $? -ne 0 ]; then
 | |
| #	echo "[FAIL]"
 | |
| #	exitcode=1
 | |
| #else
 | |
| #	echo "[PASS]"
 | |
| #fi
 | |
| #
 | |
| ##cleanup
 | |
| #umount $mnt
 | |
| #rm -rf $mnt
 | |
| #echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
 | |
| #
 | |
| #echo "-----------------------"
 | |
| #echo "running compaction_test"
 | |
| #echo "-----------------------"
 | |
| #./compaction_test
 | |
| #if [ $? -ne 0 ]; then
 | |
| #	echo "[FAIL]"
 | |
| #	exitcode=1
 | |
| #else
 | |
| #	echo "[PASS]"
 | |
| #fi
 | |
| 
 | |
| echo "----------------------"
 | |
| echo "running on-fault-limit"
 | |
| echo "----------------------"
 | |
| sudo -u nobody ./on-fault-limit
 | |
| if [ $? -ne 0 ]; then
 | |
| 	echo "[FAIL]"
 | |
| 	exitcode=1
 | |
| else
 | |
| 	echo "[PASS]"
 | |
| fi
 | |
| 
 | |
| echo "--------------------"
 | |
| echo "running map_populate"
 | |
| echo "--------------------"
 | |
| ./map_populate
 | |
| if [ $? -ne 0 ]; then
 | |
| 	echo "[FAIL]"
 | |
| 	exitcode=1
 | |
| else
 | |
| 	echo "[PASS]"
 | |
| fi
 | |
| 
 | |
| echo "--------------------"
 | |
| echo "running mlock2-tests"
 | |
| echo "--------------------"
 | |
| ./mlock2-tests
 | |
| if [ $? -ne 0 ]; then
 | |
| 	echo "[FAIL]"
 | |
| 	exitcode=1
 | |
| else
 | |
| 	echo "[PASS]"
 | |
| fi
 | |
| 
 | |
| if [ $VADDR64 -ne 0 ]; then
 | |
| echo "-----------------------------"
 | |
| echo "running virtual_address_range"
 | |
| echo "-----------------------------"
 | |
| ./virtual_address_range
 | |
| if [ $? -ne 0 ]; then
 | |
| 	echo "[FAIL]"
 | |
| 	exitcode=1
 | |
| else
 | |
| 	echo "[PASS]"
 | |
| fi
 | |
| 
 | |
| echo "-----------------------------"
 | |
| echo "running virtual address 128TB switch test"
 | |
| echo "-----------------------------"
 | |
| ./va_128TBswitch
 | |
| if [ $? -ne 0 ]; then
 | |
|     echo "[FAIL]"
 | |
|     exitcode=1
 | |
| else
 | |
|     echo "[PASS]"
 | |
| fi
 | |
| fi # VADDR64
 | |
| 
 | |
| echo "------------------------------------"
 | |
| echo "running vmalloc stability smoke test"
 | |
| echo "------------------------------------"
 | |
| ./test_vmalloc.sh smoke
 | |
| ret_val=$?
 | |
| 
 | |
| if [ $ret_val -eq 0 ]; then
 | |
| 	echo "[PASS]"
 | |
| elif [ $ret_val -eq $ksft_skip ]; then
 | |
| 	 echo "[SKIP]"
 | |
| 	 exitcode=$ksft_skip
 | |
| else
 | |
| 	echo "[FAIL]"
 | |
| 	exitcode=1
 | |
| fi
 | |
| 
 | |
| exit $exitcode
 |