From: sashiko-bot@kernel.org
To: "Vincent Donnefort" <vdonnefort@google.com>,
linux-trace-kernel@vger.kernel.org
Subject: Re: [PATCH v8 09/21] tracing/remotes: selftests: Add a test for the dmesg tracefs file
Date: Fri, 06 Nov 2026 18:26:45 +0000 [thread overview]
Message-ID: <sashiko-outbox-202028@kernel.org> (raw)
In-Reply-To: <20261106180657.2460376-10-vdonnefort@google.com>
Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [Low] tracing/remotes: selftests: dmesg.tc fails when
CONFIG_PRINTK_CALLER=y
- [Low] tracing/remotes: selftests: unpinned writes in test_dmesg() race
with poll
--
commit 3fde60957549859280fe5d4a8fc22ed359270e5c
Author: Vincent Donnefort <vdonnefort@google.com>
tracing/remotes: selftests: Add a test for the dmesg tracefs file
This commit adds ftrace selftests for the trace remote dmesg tracefs file
to verify dmesg redirection on both the test remote and hypervisor remote.
> diff --git a/tools/testing/selftests/ftrace/test.d/remotes/dmesg.tc b/tools/testing/selftests/ftrace/test.d/remotes/dmesg.tc
> new file mode 100644
> index 0000000000000..a5dcdd91e516b
> --- /dev/null
> +++ b/tools/testing/selftests/ftrace/test.d/remotes/dmesg.tc
> @@ -0,0 +1,86 @@
[ ... ]
> + nr_events=128
> + for i in $(seq 1 $nr_events); do
> + echo $i > write_event
> + done
[Severity: Low]
Can unpinned writes to write_event here race with the periodic dmesg poller
and log events out of order?
Enabling dmesg starts the 100 ms periodic poll_work, and each write_event
records into the current CPU's ring buffer. If this loop migrates from a
CPU that was already polled or drained in the current cycle to a CPU that
is drained later in the same cycle, newer events on the second CPU are
printed to dmesg before earlier events on the first CPU, which remain unseen
until the next poll cycle and cause check_trace() to fail its monotonic
timestamp and sequential ID checks. Pinning the writer loop to a single
CPU with taskset, as trace_pipe.tc does when writing concurrently with a
reader, would avoid this.
> + sleep 1
> + output=$(mktemp $TMPDIR/remote_test.XXXXXX)
> + dmesg | awk -v ts=$last_ts '
> + /^\[ *[0-9]+\.[0-9]+\]/ {
> + t=$0; sub(/^[[ \t]*/, "", t); sub(/].*/, "", t);
> + if (t+0 > ts+0) print $0
> + }' | grep "selftest id=" | sed 's/^[^]]*] //'> $output
> +
> + check_trace 1 $nr_events $output
[Severity: Low]
Does this sed expression fail to strip the printk prefix when
CONFIG_PRINTK_CALLER=y is enabled?
With CONFIG_PRINTK_CALLER=y, dmesg prefixes each line with a second
bracketed caller ID field such as "[ 12.345678][ T42] " or
"[ 12.345678] [ T42] ". Because sed 's/^[^]]*] //' only strips a
single bracketed field followed by a space, the caller ID (or the entire
prefix) remains at the start of each line in $output.
tools/testing/selftests/ftrace/test.d/remotes/functions:check_trace() {
...
sed -e 's/\[[0-9]*\]\s*\([0-9]*.[0-9]*\): [a-z]* id=\([0-9]*\)/\1 \2/' $file > $tmp
}
Because check_trace() does not strip characters preceding the numeric CPU
field, cut extracts parts of the remaining printk prefix instead of the
event timestamp and ID, causing the test to fail.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261106180657.2460376-1-vdonnefort@google.com?part=9
next prev parent reply other threads:[~2026-11-06 18:26 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-06 18:06 [PATCH v8 00/21] tracing/remotes: Add printk, dump_on_panic and boot parameters Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 01/21] tracing/remotes: Gate tracefs files opening on trace remote registration Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 02/21] tracing/remotes: Release tracefs,eventfs on registration failure Vincent Donnefort
2026-11-06 18:21 ` sashiko-bot
2026-11-06 18:06 ` [PATCH v8 03/21] tracing/remotes: Use kstrtobool for boolean tracefs files Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 04/21] tracing/remotes: Initialise pos in trace_start() Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 05/21] tracing/remotes: Annotate remote shared fields with READ_ONCE/WRITE_ONCE Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 06/21] tracing/remotes: Use a single per-remote polling work Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 07/21] tracing/simple_ring_buffer: Add support for compressed length Vincent Donnefort
2026-11-06 18:20 ` sashiko-bot
2026-11-06 18:06 ` [PATCH v8 08/21] tracing/remotes: Add dmesg tracefs file Vincent Donnefort
2026-11-06 18:26 ` sashiko-bot
2026-11-06 18:06 ` [PATCH v8 09/21] tracing/remotes: selftests: Add a test for the " Vincent Donnefort
2026-11-06 18:26 ` sashiko-bot [this message]
2026-11-06 18:06 ` [PATCH v8 10/21] tracing/remotes: selftests: Prefix hypervisor folder Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 11/21] ring-buffer: Use irqsave for the reader lock in ring_buffer_poll_remote Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 12/21] ring-buffer: Avoid reader_lock deadlock during panic Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 13/21] ring-buffer: Use panic-friendly locking in ring_buffer_iter interface Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 14/21] ring-buffer: Add kerneldoc for ring_buffer_poll_remote Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 15/21] tracing/remotes: Use ring_buffer_capacity() in trace_remote_has_cpu() Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 16/21] tracing/remotes: Add dump_on_panic tracefs file Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 17/21] tracing/remotes: selftests: Add a test for the " Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 18/21] tracing/remotes: Add poll_ms " Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 19/21] tracing/remotes: Add trace_remote cmdline options Vincent Donnefort
2026-11-06 18:33 ` sashiko-bot
2026-11-06 18:06 ` [PATCH v8 20/21] Documentation: tracing/remotes: Add detailed tracefs layout Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 21/21] Documentation/kernel-parameters: Add trace_remote Vincent Donnefort
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=sashiko-outbox-202028@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=vdonnefort@google.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox