]> git.ipfire.org Git - thirdparty/linux.git/blobdiff - tools/testing/selftests/mm/run_vmtests.sh
Merge tag 'mm-stable-2023-04-27-15-30' of git://git.kernel.org/pub/scm/linux/kernel...
[thirdparty/linux.git] / tools / testing / selftests / mm / run_vmtests.sh
index a9d6d52596f236551f47d753e885df6810076bba..4893eb60d96d83341e6ff3d9c29c28616ae2400a 100644 (file)
@@ -5,6 +5,9 @@
 # Kselftest framework requirement - SKIP code is 4.
 ksft_skip=4
 
+count_pass=0
+count_fail=0
+count_skip=0
 exitcode=0
 
 usage() {
@@ -149,11 +152,14 @@ run_test() {
                "$@"
                local ret=$?
                if [ $ret -eq 0 ]; then
+                       count_pass=$(( count_pass + 1 ))
                        echo "[PASS]"
                elif [ $ret -eq $ksft_skip ]; then
+                       count_skip=$(( count_skip + 1 ))
                        echo "[SKIP]"
                        exitcode=$ksft_skip
                else
+                       count_fail=$(( count_fail + 1 ))
                        echo "[FAIL]"
                        exitcode=1
                fi
@@ -190,15 +196,15 @@ CATEGORY="gup_test" run_test ./gup_test -a
 # Dump pages 0, 19, and 4096, using pin_user_pages:
 CATEGORY="gup_test" run_test ./gup_test -ct -F 0x1 0 19 0x1000
 
-uffd_mods=("" ":dev")
-for mod in "${uffd_mods[@]}"; do
-       CATEGORY="userfaultfd" run_test ./userfaultfd anon${mod} 20 16
-       # Hugetlb tests require source and destination huge pages. Pass in half
-       # the size ($half_ufd_size_MB), which is used for *each*.
-       CATEGORY="userfaultfd" run_test ./userfaultfd hugetlb${mod} "$half_ufd_size_MB" 32
-       CATEGORY="userfaultfd" run_test ./userfaultfd hugetlb_shared${mod} "$half_ufd_size_MB" 32
-       CATEGORY="userfaultfd" run_test ./userfaultfd shmem${mod} 20 16
-done
+CATEGORY="userfaultfd" run_test ./uffd-unit-tests
+uffd_stress_bin=./uffd-stress
+CATEGORY="userfaultfd" run_test ${uffd_stress_bin} anon 20 16
+# Hugetlb tests require source and destination huge pages. Pass in half
+# the size ($half_ufd_size_MB), which is used for *each*.
+CATEGORY="userfaultfd" run_test ${uffd_stress_bin} hugetlb "$half_ufd_size_MB" 32
+CATEGORY="userfaultfd" run_test ${uffd_stress_bin} hugetlb-private "$half_ufd_size_MB" 32
+CATEGORY="userfaultfd" run_test ${uffd_stress_bin} shmem 20 16
+CATEGORY="userfaultfd" run_test ${uffd_stress_bin} shmem-private 20 16
 
 #cleanup
 echo "$nr_hugepgs" > /proc/sys/vm/nr_hugepages
@@ -220,10 +226,26 @@ CATEGORY="mremap" run_test ./mremap_test
 CATEGORY="hugetlb" run_test ./thuge-gen
 
 if [ $VADDR64 -ne 0 ]; then
+
+       # set overcommit_policy as OVERCOMMIT_ALWAYS so that kernel
+       # allows high virtual address allocation requests independent
+       # of platform's physical memory.
+
+       prev_policy=$(cat /proc/sys/vm/overcommit_memory)
+       echo 1 > /proc/sys/vm/overcommit_memory
        CATEGORY="hugevm" run_test ./virtual_address_range
+       echo $prev_policy > /proc/sys/vm/overcommit_memory
 
-       # virtual address 128TB switch test
-       CATEGORY="hugevm" run_test ./va_128TBswitch.sh
+       # va high address boundary switch test
+       ARCH_ARM64="arm64"
+       prev_nr_hugepages=$(cat /proc/sys/vm/nr_hugepages)
+       if [ "$ARCH" == "$ARCH_ARM64" ]; then
+               echo 6 > /proc/sys/vm/nr_hugepages
+       fi
+       CATEGORY="hugevm" run_test ./va_high_addr_switch.sh
+       if [ "$ARCH" == "$ARCH_ARM64" ]; then
+               echo $prev_nr_hugepages > /proc/sys/vm/nr_hugepages
+       fi
 fi # VADDR64
 
 # vmalloc stability smoke test
@@ -271,4 +293,6 @@ CATEGORY="soft_dirty" run_test ./soft-dirty
 # COW tests
 CATEGORY="cow" run_test ./cow
 
+echo "SUMMARY: PASS=${count_pass} SKIP=${count_skip} FAIL=${count_fail}"
+
 exit $exitcode