4 # Kselftest framework requirement - SKIP code is 4.
8 # Normal tests requiring no special resources
14 # To test memfd_create with hugetlbfs, there needs to be hpages_test
15 # huge pages free. Attempt to allocate enough pages to test.
20 # Get count of free huge pages from /proc/meminfo
22 while read name size unit; do
23 if [ "$name" = "HugePages_Free:" ]; then
29 # If not enough free huge pages for test, attempt to increase
31 if [ -n "$freepgs" ] && [ $freepgs -lt $hpages_test ]; then
32 nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
33 hpages_needed=`expr $hpages_test - $freepgs`
35 if [ $UID != 0 ]; then
36 echo "Please run memfd with hugetlbfs test as root"
40 echo 3 > /proc/sys/vm/drop_caches
41 echo $(( $hpages_needed + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
42 while read name size unit; do
43 if [ "$name" = "HugePages_Free:" ]; then
50 # If still not enough huge pages available, exit. But, give back any huge
51 # pages potentially allocated above.
53 if [ $freepgs -lt $hpages_test ]; then
54 # nr_hugepgs non-zero only if we attempted to increase
55 if [ -n "$nr_hugepgs" ]; then
56 echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
58 printf "Not enough huge pages available (%d < %d)\n" \
64 # Run the hugetlbfs test
66 ./memfd_test hugetlbfs
69 # Give back any huge pages allocated for the test
71 if [ -n "$nr_hugepgs" ]; then
72 echo $nr_hugepgs > /proc/sys/vm/nr_hugepages