From: Hui Su <sh_def@163.com>
To: elver@google.com, dvyukov@google.com
Cc: kasan-dev@googlegroups.com, corbet@lwn.net,
skhan@linuxfoundation.org, rdunlap@infradead.org,
workflows@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [RFC PATCH 0/4] kcsan: add targeted watchpoint sampling
Date: Wed, 14 Oct 2026 18:52:34 +0900 [thread overview]
Message-ID: <20261014095238.2132580-1-sh_def@163.com> (raw)
Hi,
While investigating a low-frequency scheduler access around `calc_load_idx` in
`kernel/sched/loadavg.c`, I found that KCSAN's per-CPU `kcsan.skip_watch`
interval can make focused reproduction difficult. Unrelated instrumented
accesses on the same CPUs may consume the interval before execution reaches a
known suspicious address. This is a limitation in focused-debugging control;
the proposal leaves the default sampling policy unchanged.
Setting `kcsan.skip_watch=0` removes the interval globally and can make
watchpoint setup much more frequent for all eligible accesses. The existing
debugfs whitelist and blacklist filter which reports are emitted after
watchpoint selection; they do not select which addresses may set up a
watchpoint. There is currently no runtime control to focus setup attempts on
one known address while leaving unrelated accesses out of that selection.
This RFC adds an optional single-address target to the KCSAN debugfs
interface. When enabled, a non-atomic access is eligible to set up a watchpoint
only when its byte range contains the target address. Matching accesses bypass
the normal `kcsan.skip_watch` interval; nonmatching accesses neither set up a
watchpoint nor consume that interval. The target can be specified as an address
or a kallsyms symbol, including `module:symbol`; `target=off` restores normal
sampling. A static key guards the disabled path.
Patch 1 adds single-address target matching and the static-key-guarded runtime
state. Patch 2 exposes address and symbol targets through debugfs, patch 3
tests the matching semantics, and patch 4 documents the interface and its
performance implications. The standalone integration module used for runtime
checks is local and is not included in the series.
Testing:
- x86_64 GCC and Clang `bzImage modules` builds completed, and the candidate's
built-in KCSAN selftest passed 4/4. Runtime validation recorded setup
activity for exact-address and `module:symbol` targets, none for a
nonmatching target, and normal sampling after `target=off`.
- In a separate motivating loadavg run, targeting `calc_load_idx` produced a
KCSAN report involving `calc_global_load()` and `calc_load_nohz_start()`. A
separate upstream run with the default `skip_watch=4000` did not report
those locations during its test window.
- Across 10 rounds of 1,000,000 accesses, medians were `24.549 ns/access`
upstream, `24.654 ns/access` with targeting disabled, and `26.981 ns/access`
with an enabled nonmatching target. The disabled-path results were
indistinguishable at this measurement granularity. A separate 10-round,
10,000-access hot-match run measured `81.1 us/access`: every matching
access enters `kcsan_setup_watchpoint()`, so this includes setup slow-path
work and represents focused debugging rather than normal use.
Questions for discussion:
1. Is address-targeted watchpoint sampling a useful primitive for focused
KCSAN debugging?
2. Should matching accesses bypass the normal `kcsan.skip_watch` interval, as
proposed here, or should targeted mode retain its own sampling interval?
3. Is the existing KCSAN debugfs file an appropriate interface for configuring
a single target?
Hui Su (4):
kcsan: add targeted watchpoint matching
kcsan: add debugfs target control
kcsan: add targeted watchpoint selftest
docs: kcsan: document targeted watchpoint sampling
Documentation/dev-tools/kcsan.rst | 17 ++++++++++++++
kernel/kcsan/core.c | 37 +++++++++++++++++++++++++++++++
kernel/kcsan/debugfs.c | 28 ++++++++++++++++++++++-
kernel/kcsan/kcsan.h | 10 +++++++++
kernel/kcsan/selftest.c | 29 ++++++++++++++++++++++++
5 files changed, 120 insertions(+), 1 deletion(-)
base-commit: 4056b3c9d3c92ea45955641dbafeb9b960e146ef
--
2.55.0
next reply other threads:[~2026-10-14 9:53 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-14 9:52 Hui Su [this message]
2026-10-14 10:29 ` [RFC PATCH 0/4] kcsan: add targeted watchpoint sampling Hui Su
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=20261014095238.2132580-1-sh_def@163.com \
--to=sh_def@163.com \
--cc=corbet@lwn.net \
--cc=dvyukov@google.com \
--cc=elver@google.com \
--cc=kasan-dev@googlegroups.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rdunlap@infradead.org \
--cc=skhan@linuxfoundation.org \
--cc=workflows@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox