Hi Steve,

Would you have any comment on this? I would like to pick this to probes/for-next
for ensuring boottime tracing works correctly.

Thank you,

On Wed, 12 Aug 2026 09:43:28 +0900
"Masami Hiramatsu (Google)" <[email protected]> wrote:

> Hi,
> 
> This is the v3 series of the boottime tracing test framework to 
> selftests/ftrace.
> This test builds initramfs from busybox binary and test scripts, and run it on
> QEMU with modified cmdline and bootconfig.
> 
> The previous version is here:
> 
>  
> https://lore.kernel.org/all/178646245730.428104.4400499381224001727.stgit@devnote2/
> 
> In this version, I fixed some issues pointed by Sashiko[1] and add "# 
> APPLETS:"
> line support for test script. See below changelog for details.
> 
> [1] 
> https://sashiko.dev/#/patchset/178646245730.428104.4400499381224001727.stgit%40devnote2
> 
> Changes in v3:
> [1/4]
>  - Require file command and check kernel binary architecture via file -bL
>    instead of matching kernel path string in run_boottime_test.sh.
>  - Use 'cp -L' when copying BUSYBOX into initramfs to dereference
>    symbolic links.
>  - Use 'ln -sf' when creating BusyBox applet symlinks in initramfs.
>  - Add support for '# APPLETS: <applets>' header in test scripts to
>    dynamically create BusyBox applet symlinks in initramfs.
>  - Update boottime test README to document file command dependency and
>    '# APPLETS:' header syntax.
> [3/4]
>  - Add '# APPLETS: awk' header to cmdline-03-trace-buf-size.sh to request
>    awk applet in initramfs.
> 
> Changes in v2:
> [1/4]
>  - Add top-level boottime-ktap wrapper script and include it in
>    TEST_PROGS in Makefile.
>  - Define BUSYBOX_APPLETS as a global array variable including sleep
>    and sed.
>  - Require timeout tool in run_boottime_test.sh and README, and always
>    invoke QEMU under timeout command to prevent infinite execution loops.
>  - Add fallback sleep loop safeguard (sleep 100 || break) in guest
>    init script.
>  - Support multi-line .qemuopts files using read -r -d '' -a qemu_args.
> [3/4]
>  - Fix buffer_size_kb parsing in cmdline-03-trace-buf-size.sh to handle
>    unexpanded buffer string output '1 (expanded: 2048)'.
>  - Use grep -qw in cmdline-04-trace-options.sh to match word options
>    and avoid matching disabled 'no<option>' entries.
> [4/4]
>  - Increase reserve_mem alignment to 32M (reserve_mem=12M:32M:trace) to
>    ensure stable physical memory placement across KASLR reboots.
> 
> The new run_boottime_test.sh can run tests not only for boottime trace
> but also other kernel cmdline tracing options, including persistent
> ring buffer and its backup.
> 
> Overview
> --------
> The test runner (`run_boottime_test.sh`) constructs a lightweight initramfs
> with busybox and a tracefs checker script from `tests/`, attaches optional
> bootconfigs from `bootconfigs/` using the `bootconfig` tool, applies optional
> command-line parameters from `cmdlines/`, boots the target kernel image under
> QEMU, and reports results according to TAP version 13 format.
> 
> Here is an example usage of the test.
> -----
> $ ./tools/testing/selftests/ftrace/boottime/run_boottime_test.sh -k 
> ${BUILD_PATH}/arch/x86/boot/bzImage
> TAP version 13
> 1..14
> ok 1 01-kprobe
> ok 2 02-synth
> ok 3 03-eprobe
> ok 4 04-fprobe
> ok 5 05-tprobe
> ok 6 06-instance
> ok 7 cmdline-01-ftrace
> ok 8 cmdline-02-trace-event
> ok 9 cmdline-03-trace-buf-size
> ok 10 cmdline-04-trace-options
> ok 11 cmdline-05-trace-clock
> ok 12 cmdline-06-trace-instance
> ok 13 persistent-01-reserve-mem
> ok 14 persistent-02-backup-instance
> # Totals: pass:14 fail:0 xfail:0 xpass:0 skip:0 error:0
> -----
> 
> Note that this requires QEMU, busybox and some other tools to run, see README
> for more information. If those tools are not installed, this test will be
> skipped.
> 
> Other discussion
> ----------------
> BTW, I found other similar shell scripts under kselftest for other subsystems.
> I think we can make an integrated (standard) QEMU test framework in the
> kselftest common directory and reuse it.
> Also, maybe we can reconsider using ktest.pl to run these tests.
> 
> 
> Thanks,
> 
> ---
> base-commit: 29a86c5e6361caffa7e75e891169e813f82ff688
> 
> Masami Hiramatsu (Google) (4):
>       selftests/ftrace: Add generic boot tracing test framework
>       selftests/ftrace: Add boot-time tracing testcases
>       selftests/ftrace: Add kernel cmdline tracing testcases
>       selftests/ftrace: Add persistent ring buffer testcases
> 
> 
>  tools/testing/selftests/ftrace/Makefile            |    4 
>  tools/testing/selftests/ftrace/boottime-ktap       |    6 
>  tools/testing/selftests/ftrace/boottime/Makefile   |   10 
>  tools/testing/selftests/ftrace/boottime/README     |   74 ++++
>  .../ftrace/boottime/bootconfigs/01-kprobe.bconf    |    4 
>  .../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 
>  .../boottime/cmdlines/cmdline-01-ftrace.cmdline    |    1 
>  .../cmdlines/cmdline-02-trace-event.cmdline        |    1 
>  .../cmdlines/cmdline-03-trace-buf-size.cmdline     |    1 
>  .../cmdlines/cmdline-04-trace-options.cmdline      |    1 
>  .../cmdlines/cmdline-05-trace-clock.cmdline        |    1 
>  .../cmdlines/cmdline-06-trace-instance.cmdline     |    1 
>  .../cmdlines/persistent-01-reserve-mem.cmdline     |    1 
>  .../cmdlines/persistent-02-backup-instance.cmdline |    1 
>  .../selftests/ftrace/boottime/run_boottime_test.sh |  403 
> ++++++++++++++++++++
>  .../selftests/ftrace/boottime/tests/01-kprobe.sh   |   25 +
>  .../selftests/ftrace/boottime/tests/02-synth.sh    |   25 +
>  .../selftests/ftrace/boottime/tests/03-eprobe.sh   |   25 +
>  .../selftests/ftrace/boottime/tests/04-fprobe.sh   |   25 +
>  .../selftests/ftrace/boottime/tests/05-tprobe.sh   |   25 +
>  .../selftests/ftrace/boottime/tests/06-instance.sh |   30 +
>  .../ftrace/boottime/tests/cmdline-01-ftrace.sh     |   19 +
>  .../boottime/tests/cmdline-02-trace-event.sh       |   26 +
>  .../boottime/tests/cmdline-03-trace-buf-size.sh    |   29 +
>  .../boottime/tests/cmdline-04-trace-options.sh     |   23 +
>  .../boottime/tests/cmdline-05-trace-clock.sh       |   19 +
>  .../boottime/tests/cmdline-06-trace-instance.sh    |   24 +
>  .../boottime/tests/persistent-01-reserve-mem.sh    |   28 +
>  .../tests/persistent-02-backup-instance.sh         |   40 ++
>  tools/testing/selftests/ftrace/config              |    6 
>  34 files changed, 897 insertions(+), 2 deletions(-)
>  create mode 100755 tools/testing/selftests/ftrace/boottime-ktap
>  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 100644 
> tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-01-ftrace.cmdline
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-02-trace-event.cmdline
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-03-trace-buf-size.cmdline
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-04-trace-options.cmdline
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-05-trace-clock.cmdline
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-06-trace-instance.cmdline
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/cmdlines/persistent-01-reserve-mem.cmdline
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/cmdlines/persistent-02-backup-instance.cmdline
>  create mode 100755 
> tools/testing/selftests/ftrace/boottime/run_boottime_test.sh
>  create mode 100644 tools/testing/selftests/ftrace/boottime/tests/01-kprobe.sh
>  create mode 100644 tools/testing/selftests/ftrace/boottime/tests/02-synth.sh
>  create mode 100644 tools/testing/selftests/ftrace/boottime/tests/03-eprobe.sh
>  create mode 100644 tools/testing/selftests/ftrace/boottime/tests/04-fprobe.sh
>  create mode 100644 tools/testing/selftests/ftrace/boottime/tests/05-tprobe.sh
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/tests/06-instance.sh
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/tests/cmdline-01-ftrace.sh
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/tests/cmdline-02-trace-event.sh
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/tests/cmdline-03-trace-buf-size.sh
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/tests/cmdline-04-trace-options.sh
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/tests/cmdline-05-trace-clock.sh
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/tests/cmdline-06-trace-instance.sh
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/tests/persistent-01-reserve-mem.sh
>  create mode 100644 
> tools/testing/selftests/ftrace/boottime/tests/persistent-02-backup-instance.sh
> 
> --
> Masami Hiramatsu (Google) <[email protected]>


-- 
Masami Hiramatsu (Google) <[email protected]>

Reply via email to