Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0-only */
0003 #
0004 # Wrapper script which performs setup and cleanup for nx_huge_pages_test.
0005 # Makes use of root privileges to set up huge pages and KVM module parameters.
0006 #
0007 # tools/testing/selftests/kvm/nx_huge_page_test.sh
0008 # Copyright (C) 2022, Google LLC.
0009 
0010 set -e
0011 
0012 NX_HUGE_PAGES=$(cat /sys/module/kvm/parameters/nx_huge_pages)
0013 NX_HUGE_PAGES_RECOVERY_RATIO=$(cat /sys/module/kvm/parameters/nx_huge_pages_recovery_ratio)
0014 NX_HUGE_PAGES_RECOVERY_PERIOD=$(cat /sys/module/kvm/parameters/nx_huge_pages_recovery_period_ms)
0015 HUGE_PAGES=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages)
0016 
0017 set +e
0018 
0019 function sudo_echo () {
0020         echo "$1" | sudo tee -a "$2" > /dev/null
0021 }
0022 
0023 NXECUTABLE="$(dirname $0)/nx_huge_pages_test"
0024 
0025 sudo_echo test /dev/null || exit 4 # KSFT_SKIP=4
0026 
0027 (
0028         set -e
0029 
0030         sudo_echo 1 /sys/module/kvm/parameters/nx_huge_pages
0031         sudo_echo 1 /sys/module/kvm/parameters/nx_huge_pages_recovery_ratio
0032         sudo_echo 100 /sys/module/kvm/parameters/nx_huge_pages_recovery_period_ms
0033         sudo_echo "$(( $HUGE_PAGES + 3 ))" /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
0034 
0035         # Test with reboot permissions
0036         if [ $(whoami) == "root" ] || sudo setcap cap_sys_boot+ep $NXECUTABLE 2> /dev/null; then
0037                 echo Running test with CAP_SYS_BOOT enabled
0038                 $NXECUTABLE -t 887563923 -p 100 -r
0039                 test $(whoami) == "root" || sudo setcap cap_sys_boot-ep $NXECUTABLE
0040         else
0041                 echo setcap failed, skipping nx_huge_pages_test with CAP_SYS_BOOT enabled
0042         fi
0043 
0044         # Test without reboot permissions
0045         if [ $(whoami) != "root" ] ; then
0046                 echo Running test with CAP_SYS_BOOT disabled
0047                 $NXECUTABLE -t 887563923 -p 100
0048         else
0049                 echo Running as root, skipping nx_huge_pages_test with CAP_SYS_BOOT disabled
0050         fi
0051 )
0052 RET=$?
0053 
0054 sudo_echo "$NX_HUGE_PAGES" /sys/module/kvm/parameters/nx_huge_pages
0055 sudo_echo "$NX_HUGE_PAGES_RECOVERY_RATIO" /sys/module/kvm/parameters/nx_huge_pages_recovery_ratio
0056 sudo_echo "$NX_HUGE_PAGES_RECOVERY_PERIOD" /sys/module/kvm/parameters/nx_huge_pages_recovery_period_ms
0057 sudo_echo "$HUGE_PAGES" /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
0058 
0059 exit $RET