1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3# 4# Copyright (C) 2018 Uladzislau Rezki (Sony) <urezki@gmail.com> 5# 6# This is a test script for the kernel test driver to analyse vmalloc 7# allocator. Therefore it is just a kernel module loader. You can specify 8# and pass different parameters in order to: 9# a) analyse performance of vmalloc allocations; 10# b) stressing and stability check of vmalloc subsystem. 11 12TEST_NAME="test_hmm" 13DRIVER="test_hmm" 14 15# 1 if fails 16exitcode=1 17 18# Kselftest framework requirement - SKIP code is 4. 19ksft_skip=4 20 21check_test_requirements() 22{ 23 uid=$(id -u) 24 if [ $uid -ne 0 ]; then 25 echo "$0: Must be run as root" 26 exit $ksft_skip 27 fi 28 29 if ! which modprobe > /dev/null 2>&1; then 30 echo "$0: You need modprobe installed" 31 exit $ksft_skip 32 fi 33 34 if ! modinfo $DRIVER > /dev/null 2>&1; then 35 echo "$0: You must have the following enabled in your kernel:" 36 echo "CONFIG_TEST_HMM=m" 37 exit $ksft_skip 38 fi 39} 40 41load_driver() 42{ 43 modprobe $DRIVER > /dev/null 2>&1 44 if [ $? == 0 ]; then 45 major=$(awk "\$2==\"HMM_DMIRROR\" {print \$1}" /proc/devices) 46 mknod /dev/hmm_dmirror0 c $major 0 47 mknod /dev/hmm_dmirror1 c $major 1 48 fi 49} 50 51unload_driver() 52{ 53 modprobe -r $DRIVER > /dev/null 2>&1 54 rm -f /dev/hmm_dmirror? 55} 56 57run_smoke() 58{ 59 echo "Running smoke test. Note, this test provides basic coverage." 60 61 load_driver 62 $(dirname "${BASH_SOURCE[0]}")/hmm-tests 63 unload_driver 64} 65 66usage() 67{ 68 echo -n "Usage: $0" 69 echo 70 echo "Example usage:" 71 echo 72 echo "# Shows help message" 73 echo "./${TEST_NAME}.sh" 74 echo 75 echo "# Smoke testing" 76 echo "./${TEST_NAME}.sh smoke" 77 echo 78 exit 0 79} 80 81function run_test() 82{ 83 if [ $# -eq 0 ]; then 84 usage 85 else 86 if [ "$1" = "smoke" ]; then 87 run_smoke 88 else 89 usage 90 fi 91 fi 92} 93 94check_test_requirements 95run_test $@ 96 97exit 0 98