From: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
To: Steven Rostedt <rostedt@goodmis.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org
Subject: [PATCH 2/2] selftests/ftrace: Add boot-time tracing test framework
Date: Thu, 6 Aug 2026 10:07:10 +0900 [thread overview]
Message-ID: <178597843076.123558.16725675716123941033.stgit@devnote2> (raw)
In-Reply-To: <178597841107.123558.13065821394773752510.stgit@devnote2>
From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Add an automated test framework under
tools/testing/selftests/ftrace/boottime/ to verify boot-time tracing
configuration parsing.
The test runner (run_boottime_test.sh) sources ktap_helpers.sh to
generate output in TAP version 13 format. It builds a minimal
initramfs with busybox, attaches bootconfig examples using
tools/bootconfig/bootconfig, boots QEMU, and runs corresponding
tracefs checker scripts.
Assisted-by: Antigravity:gemini-3.6-flash
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
---
tools/testing/selftests/ftrace/Makefile | 2
tools/testing/selftests/ftrace/boottime/Makefile | 10 +
tools/testing/selftests/ftrace/boottime/README | 58 +++++
.../ftrace/boottime/bootconfigs/01-kprobe.bconf | 5
.../ftrace/boottime/bootconfigs/02-synth.bconf | 4
.../ftrace/boottime/bootconfigs/03-eprobe.bconf | 4
.../ftrace/boottime/bootconfigs/04-fprobe.bconf | 4
.../ftrace/boottime/bootconfigs/05-tprobe.bconf | 4
.../ftrace/boottime/bootconfigs/06-instance.bconf | 5
.../selftests/ftrace/boottime/run_boottime_test.sh | 218 ++++++++++++++++++++
.../selftests/ftrace/boottime/tests/01-kprobe.sh | 18 ++
.../selftests/ftrace/boottime/tests/02-synth.sh | 18 ++
.../selftests/ftrace/boottime/tests/03-eprobe.sh | 18 ++
.../selftests/ftrace/boottime/tests/04-fprobe.sh | 18 ++
.../selftests/ftrace/boottime/tests/05-tprobe.sh | 18 ++
.../selftests/ftrace/boottime/tests/06-instance.sh | 23 ++
tools/testing/selftests/ftrace/config | 4
17 files changed, 430 insertions(+), 1 deletion(-)
create mode 100644 tools/testing/selftests/ftrace/boottime/Makefile
create mode 100644 tools/testing/selftests/ftrace/boottime/README
create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/01-kprobe.bconf
create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/02-synth.bconf
create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/03-eprobe.bconf
create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/04-fprobe.bconf
create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/05-tprobe.bconf
create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/06-instance.bconf
create mode 100755 tools/testing/selftests/ftrace/boottime/run_boottime_test.sh
create mode 100755 tools/testing/selftests/ftrace/boottime/tests/01-kprobe.sh
create mode 100755 tools/testing/selftests/ftrace/boottime/tests/02-synth.sh
create mode 100755 tools/testing/selftests/ftrace/boottime/tests/03-eprobe.sh
create mode 100755 tools/testing/selftests/ftrace/boottime/tests/04-fprobe.sh
create mode 100755 tools/testing/selftests/ftrace/boottime/tests/05-tprobe.sh
create mode 100755 tools/testing/selftests/ftrace/boottime/tests/06-instance.sh
diff --git a/tools/testing/selftests/ftrace/Makefile b/tools/testing/selftests/ftrace/Makefile
index 7c12263f8260..8d8881744149 100644
--- a/tools/testing/selftests/ftrace/Makefile
+++ b/tools/testing/selftests/ftrace/Makefile
@@ -3,7 +3,7 @@ all:
TEST_PROGS_EXTENDED := ftracetest
TEST_PROGS := ftracetest-ktap
-TEST_FILES := test.d settings
+TEST_FILES := test.d settings boottime
EXTRA_CLEAN := $(OUTPUT)/logs/*
TEST_GEN_FILES := poll
diff --git a/tools/testing/selftests/ftrace/boottime/Makefile b/tools/testing/selftests/ftrace/boottime/Makefile
new file mode 100644
index 000000000000..fd0975350f10
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/Makefile
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: GPL-2.0
+
+all:
+
+run_tests:
+ @./run_boottime_test.sh
+
+clean:
+
+.PHONY: all run_tests clean
diff --git a/tools/testing/selftests/ftrace/boottime/README b/tools/testing/selftests/ftrace/boottime/README
new file mode 100644
index 000000000000..a6f930a6e44c
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/README
@@ -0,0 +1,58 @@
+Boot-Time Tracing Test Suite
+============================
+
+This directory contains an automated test framework to verify kernel boot-time
+tracing configuration parsing and tracefs application during early boot.
+
+Overview
+--------
+The test runner (`run_boottime_test.sh`) constructs a lightweight initramfs with
+busybox and a tracefs checker script from `tests/`, attaches a bootconfig example
+from `bootconfigs/` using the `bootconfig` tool, boots the target kernel image under
+QEMU, and reports results according to the TAP version 13 format.
+
+Required Tools
+--------------
+- Host Architecture: x86 (x86_64/i686/i386/x86; tests skip on non-x86 hosts)
+- `qemu-system-x86_64` (or custom QEMU executable)
+- `busybox` (host binary at `/usr/bin/busybox` or custom path)
+- `bootconfig` (compiled from `tools/bootconfig/bootconfig` or in PATH)
+- `cpio` (standard archiver)
+
+Required Kernel Configurations
+------------------------------
+The kernel binary under test must be compiled with:
+- `CONFIG_BOOT_CONFIG=y`
+- `CONFIG_BOOTTIME_TRACING=y`
+
+Additional feature-specific config options enable respective testcases:
+- `CONFIG_KPROBE_EVENTS=y` (for `01-kprobe`)
+- `CONFIG_SYNTH_EVENTS=y` (for `02-synth`)
+- `CONFIG_EPROBE_EVENTS=y` (for `03-eprobe`)
+- `CONFIG_FPROBE_EVENTS=y` (for `04-fprobe` and `05-tprobe`)
+- `CONFIG_FUNCTION_TRACER=y` (for tracer options in `06-instance`)
+
+Usage
+-----
+To run all test cases with a compiled kernel image:
+
+ $ ./run_boottime_test.sh -k /path/to/bzImage
+
+To run a specific test case (e.g. `01-kprobe`):
+
+ $ ./run_boottime_test.sh -k /path/to/bzImage -t 01-kprobe
+
+Customizing Tool Paths:
+
+ $ ./run_boottime_test.sh -b /path/to/bootconfig \
+ -k /path/to/bzImage \
+ -q /path/to/qemu-system-x86_64 \
+ -B /path/to/busybox
+
+Environment Variables
+---------------------
+Tool locations and kernel paths can also be set via environment variables:
+- `BOOTCONFIG`: Path to the `bootconfig` tool
+- `KERNEL`: Path to the `bzImage` kernel binary
+- `QEMU`: Path to the QEMU binary
+- `BUSYBOX`: Path to the `busybox` binary
diff --git a/tools/testing/selftests/ftrace/boottime/bootconfigs/01-kprobe.bconf b/tools/testing/selftests/ftrace/boottime/bootconfigs/01-kprobe.bconf
new file mode 100644
index 000000000000..f607840e3858
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/bootconfigs/01-kprobe.bconf
@@ -0,0 +1,5 @@
+ftrace.event.kprobes.vfs_read {
+ probes = "vfs_read $arg1 $arg2"
+ filter = "common_pid < 200"
+ enable
+}
diff --git a/tools/testing/selftests/ftrace/boottime/bootconfigs/02-synth.bconf b/tools/testing/selftests/ftrace/boottime/bootconfigs/02-synth.bconf
new file mode 100644
index 000000000000..b1f37713f33c
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/bootconfigs/02-synth.bconf
@@ -0,0 +1,4 @@
+ftrace.event.synthetic.boot_lat {
+ fields = "unsigned long id", "u64 delta"
+ enable
+}
diff --git a/tools/testing/selftests/ftrace/boottime/bootconfigs/03-eprobe.bconf b/tools/testing/selftests/ftrace/boottime/bootconfigs/03-eprobe.bconf
new file mode 100644
index 000000000000..f954aa7fb8bd
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/bootconfigs/03-eprobe.bconf
@@ -0,0 +1,4 @@
+ftrace.event.eprobes.ep_read {
+ probes = "syscalls/sys_enter_openat"
+ enable
+}
diff --git a/tools/testing/selftests/ftrace/boottime/bootconfigs/04-fprobe.bconf b/tools/testing/selftests/ftrace/boottime/bootconfigs/04-fprobe.bconf
new file mode 100644
index 000000000000..82ae2ac0629f
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/bootconfigs/04-fprobe.bconf
@@ -0,0 +1,4 @@
+ftrace.event.fprobes.fp_read {
+ probes = "vfs_read"
+ enable
+}
diff --git a/tools/testing/selftests/ftrace/boottime/bootconfigs/05-tprobe.bconf b/tools/testing/selftests/ftrace/boottime/bootconfigs/05-tprobe.bconf
new file mode 100644
index 000000000000..02a2803c770a
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/bootconfigs/05-tprobe.bconf
@@ -0,0 +1,4 @@
+ftrace.event.tracepoints.tp_sched {
+ probes = "sched_switch"
+ enable
+}
diff --git a/tools/testing/selftests/ftrace/boottime/bootconfigs/06-instance.bconf b/tools/testing/selftests/ftrace/boottime/bootconfigs/06-instance.bconf
new file mode 100644
index 000000000000..31f81da570ea
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/bootconfigs/06-instance.bconf
@@ -0,0 +1,5 @@
+ftrace.instance.foo {
+ event.sched.sched_switch.enable
+ buffer_size = 1MB
+ tracing_on = 1
+}
diff --git a/tools/testing/selftests/ftrace/boottime/run_boottime_test.sh b/tools/testing/selftests/ftrace/boottime/run_boottime_test.sh
new file mode 100755
index 000000000000..0bf95a47c5d6
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/run_boottime_test.sh
@@ -0,0 +1,218 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+#
+# Boot-time tracing test runner
+# Builds a lightweight initramfs, attaches a bootconfig, boots QEMU,
+# and verifies tracefs configuration using test scripts.
+
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+KERNEL_SRC="$(cd "$SCRIPT_DIR/../../../../.." && pwd)"
+
+# Source KTAP helpers
+KSELFTEST_DIR="$(cd "$SCRIPT_DIR/../../kselftest" && pwd)"
+if [ -f "$KSELFTEST_DIR/ktap_helpers.sh" ]; then
+ . "$KSELFTEST_DIR/ktap_helpers.sh"
+else
+ echo "Error: ktap_helpers.sh not found at $KSELFTEST_DIR"
+ exit 1
+fi
+
+BOOTCONFIG="${BOOTCONFIG:-"$KERNEL_SRC/tools/bootconfig/bootconfig"}"
+KERNEL="${KERNEL:-"$KERNEL_SRC/arch/x86/boot/bzImage"}"
+QEMU="${QEMU:-"qemu-system-x86_64"}"
+BUSYBOX="${BUSYBOX:-"$(which busybox 2>/dev/null || echo "/usr/bin/busybox")"}"
+TARGET_TEST="all"
+
+usage() {
+ echo "Usage: $0 [options]"
+ echo "Options:"
+ echo " -b, --bootconfig PATH Path to bootconfig tool (default: $BOOTCONFIG)"
+ echo " -k, --kernel PATH Path to kernel image (default: $KERNEL)"
+ echo " -q, --qemu PATH Path to QEMU executable (default: $QEMU)"
+ echo " -B, --busybox PATH Path to busybox binary (default: $BUSYBOX)"
+ echo " -t, --test NAME Run specific test (e.g. 01-kprobe) or 'all'"
+ echo " -h, --help Show this help message"
+ exit 1
+}
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ -b|--bootconfig)
+ BOOTCONFIG="$2"
+ shift 2
+ ;;
+ -k|--kernel)
+ KERNEL="$2"
+ shift 2
+ ;;
+ -q|--qemu)
+ QEMU="$2"
+ shift 2
+ ;;
+ -B|--busybox)
+ BUSYBOX="$2"
+ shift 2
+ ;;
+ -t|--test)
+ TARGET_TEST="$2"
+ shift 2
+ ;;
+ -h|--help)
+ usage
+ ;;
+ *)
+ echo "Unknown option: $1"
+ usage
+ ;;
+ esac
+done
+
+# Check host architecture
+HOST_ARCH="$(uname -m)"
+case "$HOST_ARCH" in
+ x86_64|i686|i386|x86)
+ ;;
+ *)
+ ktap_print_header
+ ktap_skip_all \
+ "Boot-time tracing tests currently support x86 host architecture only ($HOST_ARCH)"
+ exit 0
+ ;;
+esac
+
+# Ensure bootconfig tool is built if Makefile exists
+if [ ! -x "$BOOTCONFIG" ]; then
+ if [ -f "$KERNEL_SRC/tools/bootconfig/Makefile" ]; then
+ make -C "$KERNEL_SRC/tools/bootconfig" > /dev/null 2>&1 || true
+ fi
+ if [ ! -x "$BOOTCONFIG" ]; then
+ BOOTCONFIG="$(which bootconfig 2>/dev/null || true)"
+ fi
+fi
+
+if [ ! -x "$BOOTCONFIG" ]; then
+ ktap_print_header
+ ktap_skip_all "bootconfig tool not found at $BOOTCONFIG"
+ exit 0
+fi
+
+if [ ! -f "$KERNEL" ]; then
+ ktap_print_header
+ ktap_skip_all "Kernel image not found at $KERNEL"
+ exit 0
+fi
+
+if ! command -v "$QEMU" >/dev/null 2>&1; then
+ ktap_print_header
+ ktap_skip_all "QEMU binary not found: $QEMU"
+ exit 0
+fi
+
+if [ ! -x "$BUSYBOX" ]; then
+ ktap_print_header
+ ktap_skip_all "busybox binary not found at $BUSYBOX"
+ exit 0
+fi
+
+run_single_test() {
+ local bconf_file="$1"
+ local test_script="$2"
+ local name="$(basename "$bconf_file" .bconf)"
+
+ local workdir="$(mktemp -d)"
+ trap 'rm -rf "$workdir"' EXIT
+
+ local rootfs="$workdir/rootfs"
+ mkdir -p "$rootfs"/{bin,sbin,etc,proc,sys,dev,tmp}
+
+ cp "$BUSYBOX" "$rootfs/bin/busybox"
+ chmod +x "$rootfs/bin/busybox"
+ (cd "$rootfs/bin" && for applet in sh cat mount umount echo sync reboot \
+ poweroff cpio grep; do ln -s busybox $applet; done)
+
+ cat << 'EOF' > "$rootfs/init"
+#!/bin/sh
+mount -t proc proc /proc 2>/dev/null
+mount -t sysfs sys /sys 2>/dev/null
+mount -t tracefs nodev /sys/kernel/tracing 2>/dev/null
+
+/bin/check_test.sh
+RET=$?
+
+if [ $RET -eq 0 ]; then
+ echo "TEST RESULT: PASS"
+else
+ echo "TEST RESULT: FAIL"
+fi
+
+sync
+echo o > /proc/sysrq-trigger 2>/dev/null || reboot -f 2>/dev/null || poweroff -f 2>/dev/null
+EOF
+ chmod +x "$rootfs/init"
+
+ cp "$test_script" "$rootfs/bin/check_test.sh"
+ chmod +x "$rootfs/bin/check_test.sh"
+
+ local initramfs="$workdir/initramfs.cpio"
+ (cd "$rootfs" && find . | cpio -o -H newc --quiet) > "$initramfs"
+
+ # Attach bootconfig
+ "$BOOTCONFIG" -a "$bconf_file" "$initramfs" > /dev/null
+
+ # Run QEMU
+ local logfile="$workdir/qemu.log"
+ "$QEMU" -kernel "$KERNEL" \
+ -initrd "$initramfs" \
+ -append "bootconfig console=ttyS0 quiet panic=-1" \
+ -nographic \
+ -no-reboot > "$logfile" 2>&1 || true
+
+ if grep -q "TEST RESULT: PASS" "$logfile"; then
+ ktap_test_pass "$name"
+ rm -rf "$workdir"
+ trap - EXIT
+ return 0
+ else
+ ktap_test_fail "$name"
+ ktap_print_msg "QEMU Console Output for $name:"
+ while IFS= read -r line; do
+ ktap_print_msg "$line"
+ done < "$logfile"
+ rm -rf "$workdir"
+ trap - EXIT
+ return 1
+ fi
+}
+
+TEST_FILES=("$SCRIPT_DIR/bootconfigs"/*.bconf)
+TOTAL_TESTS=0
+for bconf in "${TEST_FILES[@]}"; do
+ name="$(basename "$bconf" .bconf)"
+ if [ "$TARGET_TEST" != "all" ] && [ "$TARGET_TEST" != "$name" ]; then
+ continue
+ fi
+ TOTAL_TESTS=$((TOTAL_TESTS + 1))
+done
+
+ktap_print_header
+ktap_set_plan "$TOTAL_TESTS"
+
+for bconf in "${TEST_FILES[@]}"; do
+ name="$(basename "$bconf" .bconf)"
+ test_script="$SCRIPT_DIR/tests/$name.sh"
+
+ if [ "$TARGET_TEST" != "all" ] && [ "$TARGET_TEST" != "$name" ]; then
+ continue
+ fi
+
+ if [ ! -f "$test_script" ]; then
+ ktap_test_skip "$name (test script missing)"
+ continue
+ fi
+
+ run_single_test "$bconf" "$test_script" || true
+done
+
+ktap_finished
diff --git a/tools/testing/selftests/ftrace/boottime/tests/01-kprobe.sh b/tools/testing/selftests/ftrace/boottime/tests/01-kprobe.sh
new file mode 100755
index 000000000000..a20e7e82d158
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/tests/01-kprobe.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Check kprobe bootconfig settings on tracefs
+TRACEDIR="/sys/kernel/tracing"
+
+if [ ! -d "$TRACEDIR/events/kprobes/vfs_read" ]; then
+ echo "FAIL: kprobe event kprobes/vfs_read does not exist"
+ exit 1
+fi
+
+ENABLE=$(cat "$TRACEDIR/events/kprobes/vfs_read/enable")
+if [ "$ENABLE" != "1" ]; then
+ echo "FAIL: kprobe event kprobes/vfs_read is not enabled ($ENABLE)"
+ exit 1
+fi
+
+echo "PASS: 01-kprobe"
+exit 0
diff --git a/tools/testing/selftests/ftrace/boottime/tests/02-synth.sh b/tools/testing/selftests/ftrace/boottime/tests/02-synth.sh
new file mode 100755
index 000000000000..46d3b152cbea
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/tests/02-synth.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Check synthetic event bootconfig settings on tracefs
+TRACEDIR="/sys/kernel/tracing"
+
+if [ ! -d "$TRACEDIR/events/synthetic/boot_lat" ]; then
+ echo "FAIL: synthetic event synthetic/boot_lat does not exist"
+ exit 1
+fi
+
+ENABLE=$(cat "$TRACEDIR/events/synthetic/boot_lat/enable")
+if [ "$ENABLE" != "1" ]; then
+ echo "FAIL: synthetic event synthetic/boot_lat is not enabled ($ENABLE)"
+ exit 1
+fi
+
+echo "PASS: 02-synth"
+exit 0
diff --git a/tools/testing/selftests/ftrace/boottime/tests/03-eprobe.sh b/tools/testing/selftests/ftrace/boottime/tests/03-eprobe.sh
new file mode 100755
index 000000000000..108f9ba31c06
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/tests/03-eprobe.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Check eprobe event bootconfig settings on tracefs
+TRACEDIR="/sys/kernel/tracing"
+
+if [ ! -d "$TRACEDIR/events/eprobes/ep_read" ]; then
+ echo "FAIL: eprobe event eprobes/ep_read does not exist"
+ exit 1
+fi
+
+ENABLE=$(cat "$TRACEDIR/events/eprobes/ep_read/enable")
+if [ "$ENABLE" != "1" ]; then
+ echo "FAIL: eprobe event eprobes/ep_read is not enabled ($ENABLE)"
+ exit 1
+fi
+
+echo "PASS: 03-eprobe"
+exit 0
diff --git a/tools/testing/selftests/ftrace/boottime/tests/04-fprobe.sh b/tools/testing/selftests/ftrace/boottime/tests/04-fprobe.sh
new file mode 100755
index 000000000000..c0a316bf7dde
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/tests/04-fprobe.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Check fprobe event bootconfig settings on tracefs
+TRACEDIR="/sys/kernel/tracing"
+
+if [ ! -d "$TRACEDIR/events/fprobes/fp_read" ]; then
+ echo "FAIL: fprobe event fprobes/fp_read does not exist"
+ exit 1
+fi
+
+ENABLE=$(cat "$TRACEDIR/events/fprobes/fp_read/enable")
+if [ "$ENABLE" != "1" ]; then
+ echo "FAIL: fprobe event fprobes/fp_read is not enabled ($ENABLE)"
+ exit 1
+fi
+
+echo "PASS: 04-fprobe"
+exit 0
diff --git a/tools/testing/selftests/ftrace/boottime/tests/05-tprobe.sh b/tools/testing/selftests/ftrace/boottime/tests/05-tprobe.sh
new file mode 100755
index 000000000000..b29119b81e07
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/tests/05-tprobe.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Check tracepoint probe event bootconfig settings on tracefs
+TRACEDIR="/sys/kernel/tracing"
+
+if [ ! -d "$TRACEDIR/events/tracepoints/tp_sched" ]; then
+ echo "FAIL: tracepoint probe event tracepoints/tp_sched does not exist"
+ exit 1
+fi
+
+ENABLE=$(cat "$TRACEDIR/events/tracepoints/tp_sched/enable")
+if [ "$ENABLE" != "1" ]; then
+ echo "FAIL: tracepoint probe event tracepoints/tp_sched is not enabled ($ENABLE)"
+ exit 1
+fi
+
+echo "PASS: 05-tprobe"
+exit 0
diff --git a/tools/testing/selftests/ftrace/boottime/tests/06-instance.sh b/tools/testing/selftests/ftrace/boottime/tests/06-instance.sh
new file mode 100755
index 000000000000..a95fdddaa6a6
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/tests/06-instance.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Check instance bootconfig settings on tracefs
+TRACEDIR="/sys/kernel/tracing"
+
+if [ ! -d "$TRACEDIR/instances/foo" ]; then
+ echo "FAIL: trace instance foo does not exist"
+ exit 1
+fi
+
+if [ ! -d "$TRACEDIR/instances/foo/events/sched/sched_switch" ]; then
+ echo "FAIL: event sched_switch does not exist in instance foo"
+ exit 1
+fi
+
+ENABLE=$(cat "$TRACEDIR/instances/foo/events/sched/sched_switch/enable")
+if [ "$ENABLE" != "1" ]; then
+ echo "FAIL: event sched_switch is not enabled in instance foo ($ENABLE)"
+ exit 1
+fi
+
+echo "PASS: 06-instance"
+exit 0
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config
index 544de0db5f58..fec41c6b290e 100644
--- a/tools/testing/selftests/ftrace/config
+++ b/tools/testing/selftests/ftrace/config
@@ -1,3 +1,5 @@
+CONFIG_BOOT_CONFIG=y
+CONFIG_BOOTTIME_TRACING=y
CONFIG_BPF_SYSCALL=y
CONFIG_DEBUG_INFO_BTF=y
CONFIG_DEBUG_INFO_DWARF4=y
@@ -8,6 +10,7 @@ CONFIG_FTRACE=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_FUNCTION_GRAPH_RETVAL=y
CONFIG_FUNCTION_PROFILER=y
+CONFIG_FUNCTION_TRACER=y
CONFIG_HIST_TRIGGERS=y
CONFIG_IRQSOFF_TRACER=y
CONFIG_KALLSYMS_ALL=y
@@ -24,6 +27,7 @@ CONFIG_SAMPLE_TRACE_EVENTS=m
CONFIG_SAMPLE_TRACE_PRINTK=m
CONFIG_SCHED_TRACER=y
CONFIG_STACK_TRACER=y
+CONFIG_SYNTH_EVENTS=y
CONFIG_TRACER_SNAPSHOT=y
CONFIG_UPROBES=y
CONFIG_UPROBE_EVENTS=y
prev parent reply other threads:[~2026-08-06 1:07 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-06 1:06 [PATCH 0/2] tracing/boot: Support eprobe, fprobe, and tprobe events and add test framework Masami Hiramatsu (Google)
2026-08-06 1:07 ` [PATCH 1/2] tracing/boot: Add support for eprobe, fprobe, and tprobe events Masami Hiramatsu (Google)
2026-08-06 14:00 ` Masami Hiramatsu
2026-08-06 1:07 ` Masami Hiramatsu (Google) [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178597843076.123558.16725675716123941033.stgit@devnote2 \
--to=mhiramat@kernel.org \
--cc=corbet@lwn.net \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=rostedt@goodmis.org \
--cc=skhan@linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.