From: "Nicholas Piggin" <npiggin@gmail.com>
To: "Naveen N Rao" <naveen@kernel.org>,
<linuxppc-dev@lists.ozlabs.org>,
<linux-trace-kernel@vger.kernel.org>, <bpf@vger.kernel.org>,
<linux-kbuild@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Cc: "Michael Ellerman" <mpe@ellerman.id.au>,
"Christophe Leroy" <christophe.leroy@csgroup.eu>,
"Steven Rostedt" <rostedt@goodmis.org>,
"Masami Hiramatsu" <mhiramat@kernel.org>,
"Mark Rutland" <mark.rutland@arm.com>,
"Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Andrii Nakryiko" <andrii@kernel.org>,
"Masahiro Yamada" <masahiroy@kernel.org>,
"Hari Bathini" <hbathini@linux.ibm.com>,
"Mahesh Salgaonkar" <mahesh@linux.ibm.com>,
"Vishal Chourasia" <vishalc@linux.ibm.com>
Subject: Re: [RFC PATCH v4 12/17] powerpc64/ftrace: Move ftrace sequence out of line
Date: Mon, 15 Jul 2024 18:25:10 +1000 [thread overview]
Message-ID: <D2PYW90LRVAY.3PCE9P3NE2NEB@gmail.com> (raw)
In-Reply-To: <9cf2cdddba74ec167ae1af5ec189bba8f704fb51.1720942106.git.naveen@kernel.org>
On Sun Jul 14, 2024 at 6:27 PM AEST, Naveen N Rao wrote:
> Function profile sequence on powerpc includes two instructions at the
> beginning of each function:
> mflr r0
> bl ftrace_caller
>
> The call to ftrace_caller() gets nop'ed out during kernel boot and is
> patched in when ftrace is enabled.
>
> Given the sequence, we cannot return from ftrace_caller with 'blr' as we
> need to keep LR and r0 intact. This results in link stack (return
> address predictor) imbalance when ftrace is enabled. To address that, we
> would like to use a three instruction sequence:
> mflr r0
> bl ftrace_caller
> mtlr r0
>
> Further more, to support DYNAMIC_FTRACE_WITH_CALL_OPS, we need to
> reserve two instruction slots before the function. This results in a
> total of five instruction slots to be reserved for ftrace use on each
> function that is traced.
>
> Move the function profile sequence out-of-line to minimize its impact.
> To do this, we reserve a single nop at function entry using
> -fpatchable-function-entry=1 and add a pass on vmlinux.o to determine
> the total number of functions that can be traced. This is then used to
> generate a .S file reserving the appropriate amount of space for use as
> ftrace stubs, which is built and linked into vmlinux.
These are all going into .tramp.ftrace.text AFAIKS? Should that be
moved after some of the other text in the linker script then if it
could get quite large? sched and lock and other things should be
closer to the rest of text and hot code.
Thanks,
Nick
next prev parent reply other threads:[~2024-07-15 8:25 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-14 8:27 [RFC PATCH v4 00/17] powerpc: Core ftrace rework, support for ftrace direct and bpf trampolines Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 01/17] powerpc/trace: Account for -fpatchable-function-entry support by toolchain Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 02/17] powerpc/kprobes: Use ftrace to determine if a probe is at function entry Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 03/17] powerpc64/ftrace: Nop out additional 'std' instruction emitted by gcc v5.x Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 04/17] powerpc32/ftrace: Unify 32-bit and 64-bit ftrace entry code Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 05/17] powerpc/module_64: Convert #ifdef to IS_ENABLED() Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 06/17] powerpc/ftrace: Remove pointer to struct module from dyn_arch_ftrace Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 07/17] powerpc/ftrace: Skip instruction patching if the instructions are the same Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 08/17] powerpc/ftrace: Move ftrace stub used for init text before _einittext Naveen N Rao
2024-07-15 6:52 ` Nicholas Piggin
2024-07-14 8:27 ` [RFC PATCH v4 09/17] powerpc64/bpf: Fold bpf_jit_emit_func_call_hlp() into bpf_jit_emit_func_call_rel() Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 10/17] powerpc/ftrace: Add a postlink script to validate function tracer Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 11/17] kbuild: Add generic hook for architectures to use before the final vmlinux link Naveen N Rao
2024-07-15 7:29 ` Nicholas Piggin
2024-07-14 8:27 ` [RFC PATCH v4 12/17] powerpc64/ftrace: Move ftrace sequence out of line Naveen N Rao
2024-07-15 8:25 ` Nicholas Piggin [this message]
2024-07-15 12:42 ` David Laight
2024-08-27 9:12 ` Masahiro Yamada
2024-07-14 8:27 ` [RFC PATCH v4 13/17] powerpc64/ftrace: Support .text larger than 32MB with out-of-line stubs Naveen N Rao
2024-07-15 8:27 ` Nicholas Piggin
2024-07-14 8:27 ` [RFC PATCH v4 14/17] powerpc/ftrace: Add support for DYNAMIC_FTRACE_WITH_CALL_OPS Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 15/17] powerpc/ftrace: Add support for DYNAMIC_FTRACE_WITH_DIRECT_CALLS Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 16/17] samples/ftrace: Add support for ftrace direct samples on powerpc Naveen N Rao
2024-07-14 8:27 ` [RFC PATCH v4 17/17] powerpc64/bpf: Add support for bpf trampolines Naveen N Rao
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=D2PYW90LRVAY.3PCE9P3NE2NEB@gmail.com \
--to=npiggin@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=daniel@iogearbox.net \
--cc=hbathini@linux.ibm.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mahesh@linux.ibm.com \
--cc=mark.rutland@arm.com \
--cc=masahiroy@kernel.org \
--cc=mhiramat@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=naveen@kernel.org \
--cc=rostedt@goodmis.org \
--cc=vishalc@linux.ibm.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;
as well as URLs for NNTP newsgroup(s).