tools/vm: rename tools/vm to tools/mm
[linux-block.git] / tools / testing / selftests / vm / va_128TBswitch.sh
CommitLineData
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
11exitcode=1
12
13# Kselftest framework requirement - SKIP code is 4.
14ksft_skip=4
15
16fail()
17{
18 echo "$1"
19 exit $exitcode
20}
21
22check_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
38check_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
53check_test_requirements
54./va_128TBswitch