[PATCH 2/2] selftests/ftrace: Add test case for overriding trace_instance parameter
From: Masami Hiramatsu (Google)
Date: Sat Sep 19 2026 - 10:38:56 EST
From: Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx>
Add a boot-time tracing test case to verify that specifying multiple
trace_instance= parameters with the same instance name overrides earlier
definitions:
- Verifies that a kernel command-line trace_instance= parameter
overrides an earlier trace instance defined via bootconfig
(kernel.trace_instance).
- Verifies that a latter kernel command-line trace_instance=
parameter overrides an earlier trace_instance= on the same
command line.
- Confirms that the overridden instance has its previous events
disabled, new events enabled, and flags (such as traceoff)
properly applied.
Assisted-by: Antigravity:gemini-3.8-flash
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx>
---
.../cmdline-07-trace-instance-override.bconf | 2 +
.../cmdline-07-trace-instance-override.cmdline | 1
.../tests/cmdline-07-trace-instance-override.sh | 56 ++++++++++++++++++++
3 files changed, 59 insertions(+)
create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/cmdline-07-trace-instance-override.bconf
create mode 100644 tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-07-trace-instance-override.cmdline
create mode 100644 tools/testing/selftests/ftrace/boottime/tests/cmdline-07-trace-instance-override.sh
diff --git a/tools/testing/selftests/ftrace/boottime/bootconfigs/cmdline-07-trace-instance-override.bconf b/tools/testing/selftests/ftrace/boottime/bootconfigs/cmdline-07-trace-instance-override.bconf
new file mode 100644
index 000000000000..2551da39f722
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/bootconfigs/cmdline-07-trace-instance-override.bconf
@@ -0,0 +1,2 @@
+kernel.trace_instance = "foo,sched:sched_switch"
+
diff --git a/tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-07-trace-instance-override.cmdline b/tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-07-trace-instance-override.cmdline
new file mode 100644
index 000000000000..1953eb5d6f80
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-07-trace-instance-override.cmdline
@@ -0,0 +1 @@
+trace_instance=foo^traceoff,sched:sched_waking trace_instance=bar,sched:sched_switch trace_instance=bar^traceoff,irq:irq_handler_entry
diff --git a/tools/testing/selftests/ftrace/boottime/tests/cmdline-07-trace-instance-override.sh b/tools/testing/selftests/ftrace/boottime/tests/cmdline-07-trace-instance-override.sh
new file mode 100644
index 000000000000..a13b7deb6735
--- /dev/null
+++ b/tools/testing/selftests/ftrace/boottime/tests/cmdline-07-trace-instance-override.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2026, Google LLC.
+# Check trace_instance= override with bootconfig and kernel command-line
+TRACEDIR="/sys/kernel/tracing"
+
+if [ -f /proc/bootconfig ] && grep -q "dump_bconf" /proc/cmdline 2>/dev/null; then
+ echo "=== /proc/bootconfig ==="
+ cat /proc/bootconfig
+ echo "========================"
+fi
+
+check_instance() {
+ instance="$1"
+ old_event="$2"
+ new_event="$3"
+
+ if [ ! -d "$TRACEDIR/instances/$instance" ]; then
+ echo "FAIL: trace instance $instance does not exist"
+ exit 1
+ fi
+
+ if [ -f "$TRACEDIR/instances/$instance/events/$old_event/enable" ]; then
+ ENABLE=$(cat "$TRACEDIR/instances/$instance/events/$old_event/enable")
+ if [ "$ENABLE" = "1" ]; then
+ echo "FAIL: overridden event $old_event is still enabled in instance $instance"
+ exit 1
+ fi
+ fi
+
+ if [ ! -d "$TRACEDIR/instances/$instance/events/$new_event" ]; then
+ echo "FAIL: event $new_event does not exist in instance $instance"
+ exit 1
+ fi
+
+ ENABLE=$(cat "$TRACEDIR/instances/$instance/events/$new_event/enable")
+ if [ "$ENABLE" != "1" ]; then
+ echo "FAIL: event $new_event is not enabled in instance $instance ($ENABLE)"
+ exit 1
+ fi
+
+ TRACING_ON=$(cat "$TRACEDIR/instances/$instance/tracing_on")
+ if [ "$TRACING_ON" != "0" ]; then
+ echo "FAIL: tracing_on is not 0 in instance $instance ($TRACING_ON)"
+ exit 1
+ fi
+}
+
+# Test 1: bootconfig trace_instance overridden by cmdline parameter
+check_instance "foo" "sched/sched_switch" "sched/sched_waking"
+
+# Test 2: cmdline trace_instance overridden by subsequent cmdline parameter
+check_instance "bar" "sched/sched_switch" "irq/irq_handler_entry"
+
+echo "PASS: cmdline-07-trace-instance-override"
+exit 0