From: Ben Niu <BenNiu@meta.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Ben Niu <niuben003@gmail.com>, Ben Niu <benniu@meta.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, <tytso@mit.edu>, <Jason@zx2c4.com>,
<linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>
Subject: Withdraw [PATCH v2] tracing: Enable kprobe for selected Arm64 assembly
Date: Tue, 9 Dec 2025 19:32:29 -0800 [thread overview]
Message-ID: <aTjpzfqTEGPcird5@meta.com> (raw)
In-Reply-To: <aRr1gXk1giE8TXvY@J2N7QTR9R3>
On Mon, Nov 17, 2025 at 10:14:25AM +0000, Mark Rutland wrote:
> On Mon, Nov 03, 2025 at 10:52:35AM -0800, Ben Niu wrote:
> > When ftrace is enabled, a function can only be kprobe'd if
> > (1) the function has proper nops inserted at the beginning
> > (2) the first inserted nop's address is added in section
> > __patchable_function_entries.
> >
> > See function within_notrace_func in kernel/trace/trace_kprobe.c
> > for more details.
>
> As mentioned last time, this isn't accurate, and this is at the wrong
> level of abstraction. You're conflating kprobes with kprobes-based trace
> evnts, and you're describing the implementation details of ftrace rather
> than the logical situation that the function needs to be traceable via
> ftrace
>
> This would be better summarized as:
>
> While kprobes can be placed on most kernel functions, kprobes-based
> trace events can only be placed on functions which are traceable via
> ftrace (unless CONFIG_KPROBE_EVENTS_ON_NOTRACE=y).
Thanks. I'm withdrawing this patch because my colleague suggested
a workaround that could trace __arch_copy_to_user/__arch_copy_from_user
without any changes for the kernel:
bpftrace -q -e '
BEGIN {
printf("Attaching to __arch_copy_to_user...\n");
}
watchpoint:'"0x$(grep ' __arch_copy_to_user$' /proc/kallsyms | awk '{print $1}')"':4:x
{
$n = reg("r2");
@__arch_copy_to_user_sizes = hist($n);
}'
> IIUC from last time you only want this so that you can introspect
> __arch_copy_to_user() and __arch_copy_from_user(), so why can't you
> select CONFIG_KPROBE_EVENTS_ON_NOTRACE in your test kernel? That would
> require zero kernel changes AFAICT.
CONFIG_KPROBE_EVENTS_ON_NOTRACE has this help message, see
https://github.com/torvalds/linux/blob/c9b47175e9131118e6f221cc8fb81397d62e7c91/kernel/trace/Kconfig#L798,
that discourages production enablement, so we didn't turn it on.
> I'm not keen on doing this unless absolutely necessary, and as above it
> looks like we already have suitable options to make this possible for
> your use-case.
This patch is no longer needed.
> > This patch adds a new asm function macro SYM_FUNC_START_TRACE
> > that makes an asm funtion satisfy the above two conditions so that
> > it can be kprobe'd. In addition, the macro is applied to
> > __arch_copy_to_user and __arch_copy_from_user, which were found
> > to be hot in certain workloads.
> >
> > Note: although this patch unblocks kprobe tracing, fentry is still
> > broken because no BTF info gets generated from assembly files. A
> > separate patch is needed to fix that.
>
> As above, I'm not keen on doing this, and if it's largely incomplete, I
> think that's another nail in the coffin.
>
> [...]
>
> > +#ifdef CONFIG_ARM64_BTI_KERNEL
> > +#define BTI_C bti c;
> > +#else
> > +#define BTI_C
> > +#endif
>
> Please note that we deliberately chose to always output BTI for asm
> functions to avoid a performance vaiability depending on whether BTI was
> enabled, so if we're going to change that, we must do that as a
> preparatory step with a clear rationale.
Ok, thanks for clarifying that.
> Mark.
prev parent reply other threads:[~2025-12-10 3:32 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-03 18:52 [PATCH v2] tracing: Enable kprobe for selected Arm64 assembly Ben Niu
2025-11-17 10:14 ` Mark Rutland
2025-12-10 3:32 ` Ben Niu [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=aTjpzfqTEGPcird5@meta.com \
--to=benniu@meta.com \
--cc=Jason@zx2c4.com \
--cc=catalin.marinas@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=niuben003@gmail.com \
--cc=tytso@mit.edu \
--cc=will@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 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.