Commit | Line | Data |
---|---|---|
4f2930c6 AS |
1 | #!/bin/bash |
2 | # SPDX-License-Identifier: GPL-2.0 | |
3 | # | |
4 | # Copyright (C) 2022 Adam Sindelar (Meta) <adam@wowsignal.io> | |
5 | # | |
6 | # This is a test for mmap behavior with 5-level paging. This script wraps the | |
7 | # real test to check that the kernel is configured to support at least 5 | |
8 | # pagetable levels. | |
9 | ||
10 | # 1 means the test failed | |
11 | exitcode=1 | |
12 | ||
13 | # Kselftest framework requirement - SKIP code is 4. | |
14 | ksft_skip=4 | |
15 | ||
16 | fail() | |
17 | { | |
18 | echo "$1" | |
19 | exit $exitcode | |
20 | } | |
21 | ||
22 | check_supported_x86_64() | |
23 | { | |
24 | local config="/proc/config.gz" | |
25 | [[ -f "${config}" ]] || config="/boot/config-$(uname -r)" | |
26 | [[ -f "${config}" ]] || fail "Cannot find kernel config in /proc or /boot" | |
27 | ||
28 | # gzip -dcfq automatically handles both compressed and plaintext input. | |
29 | # See man 1 gzip under '-f'. | |
30 | local pg_table_levels=$(gzip -dcfq "${config}" | grep PGTABLE_LEVELS | cut -d'=' -f 2) | |
31 | ||
32 | if [[ "${pg_table_levels}" -lt 5 ]]; then | |
33 | echo "$0: PGTABLE_LEVELS=${pg_table_levels}, must be >= 5 to run this test" | |
34 | exit $ksft_skip | |
35 | fi | |
36 | } | |
37 | ||
38 | check_test_requirements() | |
39 | { | |
40 | # The test supports x86_64 and powerpc64. We currently have no useful | |
41 | # eligibility check for powerpc64, and the test itself will reject other | |
42 | # architectures. | |
43 | case `uname -m` in | |
44 | "x86_64") | |
45 | check_supported_x86_64 | |
46 | ;; | |
47 | *) | |
48 | return 0 | |
49 | ;; | |
50 | esac | |
51 | } | |
52 | ||
53 | check_test_requirements | |
54 | ./va_128TBswitch |