Messages in this thread | | | Subject | Re: [PATCH v8 4/5] arm64: implement ftrace with regs | From | Julien Thierry <> | Date | Wed, 13 Feb 2019 10:30:12 +0000 |
| |
Hi Torsten,
On 08/02/2019 15:10, Torsten Duwe wrote: > Implement ftrace with regs, based on the new gcc flag > -fpatchable-function-entry (=2) > > Now that gcc8 added 2 NOPs at the beginning of each function, replace > the first NOP thus generated with a quick LR saver (move it to scratch > reg x9), so the 2nd replacement insn, the call to ftrace, does not > clobber the value. Ftrace will then generate the standard stack > frames. > > Note that patchable-function-entry in GCC disables IPA-RA, which means > ABI register calling conventions are obeyed and scratch registers such > as x9 are available. > > Introduce and handle an ftrace_regs_trampoline for module PLTs, right > after ftrace_trampoline in an ftrace_trampolines[2] array, and double > the size of the corresponding special section. > > Signed-off-by: Torsten Duwe <duwe@suse.de> > > --- > arch/arm64/include/asm/ftrace.h | 16 ++++ > arch/arm64/include/asm/module.h | 3 > arch/arm64/kernel/entry-ftrace.S | 125 +++++++++++++++++++++++++++++++++++++-- > arch/arm64/kernel/ftrace.c | 117 ++++++++++++++++++++++++++++-------- > arch/arm64/kernel/module-plts.c | 3 > arch/arm64/kernel/module.c | 2 > 6 files changed, 231 insertions(+), 35 deletions(-)
[...]
> --- a/arch/arm64/include/asm/module.h > +++ b/arch/arm64/include/asm/module.h > @@ -32,7 +32,8 @@ struct mod_arch_specific { > struct mod_plt_sec init; > > /* for CONFIG_DYNAMIC_FTRACE */ > - struct plt_entry *ftrace_trampoline; > + struct plt_entry *ftrace_trampolines; > +#define MOD_ARCH_NR_FTRACE_TRAMPOLINES 2
Nit: I'd define this outside of the struct, just below MODULE_ARCH_VERMAGIC, and use the prefix "MODULE_ARCH" instead of "MOD_ARCH" as this seem to be already in use for a few other defines.
Otherwise things look good to me:
Reviewed-by: Julien Thierry <julien.thierry@arm.com>
Cheers,
-- Julien Thierry
| |