Commit | Line | Data |
---|---|---|
fee9f6d1 RC |
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 | ||
12 | TEST_NAME="test_hmm" | |
13 | DRIVER="test_hmm" | |
14 | ||
15 | # 1 if fails | |
16 | exitcode=1 | |
17 | ||
18 | # Kselftest framework requirement - SKIP code is 4. | |
19 | ksft_skip=4 | |
20 | ||
21 | check_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 | ||
41 | load_driver() | |
42 | { | |
e6474b1a AS |
43 | if [ $# -eq 0 ]; then |
44 | modprobe $DRIVER > /dev/null 2>&1 | |
45 | else | |
46 | if [ $# -eq 2 ]; then | |
47 | modprobe $DRIVER spm_addr_dev0=$1 spm_addr_dev1=$2 | |
48 | > /dev/null 2>&1 | |
49 | else | |
50 | echo "Missing module parameters. Make sure pass"\ | |
51 | "spm_addr_dev0 and spm_addr_dev1" | |
52 | usage | |
53 | fi | |
54 | fi | |
fee9f6d1 RC |
55 | } |
56 | ||
57 | unload_driver() | |
58 | { | |
59 | modprobe -r $DRIVER > /dev/null 2>&1 | |
fee9f6d1 RC |
60 | } |
61 | ||
62 | run_smoke() | |
63 | { | |
64 | echo "Running smoke test. Note, this test provides basic coverage." | |
65 | ||
e6474b1a | 66 | load_driver $1 $2 |
fee9f6d1 RC |
67 | $(dirname "${BASH_SOURCE[0]}")/hmm-tests |
68 | unload_driver | |
69 | } | |
70 | ||
71 | usage() | |
72 | { | |
73 | echo -n "Usage: $0" | |
74 | echo | |
75 | echo "Example usage:" | |
76 | echo | |
77 | echo "# Shows help message" | |
78 | echo "./${TEST_NAME}.sh" | |
79 | echo | |
80 | echo "# Smoke testing" | |
81 | echo "./${TEST_NAME}.sh smoke" | |
82 | echo | |
e6474b1a AS |
83 | echo "# Smoke testing with SPM enabled" |
84 | echo "./${TEST_NAME}.sh smoke <spm_addr_dev0> <spm_addr_dev1>" | |
85 | echo | |
fee9f6d1 RC |
86 | exit 0 |
87 | } | |
88 | ||
89 | function run_test() | |
90 | { | |
91 | if [ $# -eq 0 ]; then | |
92 | usage | |
93 | else | |
94 | if [ "$1" = "smoke" ]; then | |
e6474b1a | 95 | run_smoke $2 $3 |
fee9f6d1 RC |
96 | else |
97 | usage | |
98 | fi | |
99 | fi | |
100 | } | |
101 | ||
102 | check_test_requirements | |
103 | run_test $@ | |
104 | ||
105 | exit 0 |