linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v7 0/2] ARM: Implement MODULE_PLT support in FTRACE
@ 2021-01-27 11:09 Alexander A Sverdlin
  2021-01-27 11:09 ` [PATCH v7 1/2] ARM: PLT: Move struct plt_entries definition to header Alexander A Sverdlin
                   ` (2 more replies)
  0 siblings, 3 replies; 30+ messages in thread
From: Alexander A Sverdlin @ 2021-01-27 11:09 UTC (permalink / raw)
  To: Steven Rostedt, Ingo Molnar, Russell King, linux-arm-kernel,
	Florian Fainelli
  Cc: Alexander Sverdlin, linux-kernel, Ard Biesheuvel

From: Alexander Sverdlin <alexander.sverdlin@nokia.com>

FTRACE's function tracer currently doesn't always work on ARM with
MODULE_PLT option enabled. If the module is loaded too far, FTRACE's
code modifier cannot cope with introduced veneers and turns the
function tracer off globally.

ARM64 already has a solution for the problem, refer to the following
patches:

arm64: ftrace: emit ftrace-mod.o contents through code
arm64: module-plts: factor out PLT generation code for ftrace
arm64: ftrace: fix !CONFIG_ARM64_MODULE_PLTS kernels
arm64: ftrace: fix building without CONFIG_MODULES
arm64: ftrace: add support for far branches to dynamic ftrace
arm64: ftrace: don't validate branch via PLT in ftrace_make_nop()

But the presented ARM variant has just a half of the footprint in terms of
the changed LoCs. It also retains the code validation-before-modification
instead of switching it off.

Changelog:
v7:
* rebased
v6:
* rebased
v5:
* BUILD_BUG_ON() ensures fixed_plts[] always fits one PLT block
* use "for" loop instead of "while"
* scripts/recordmcount is filtering reloc types
v4:
* Fixed build without CONFIG_FUNCTION_TRACER
* Reorganized pre-allocated PLTs handling in get_module_plt(),
  now compiler eliminates the whole FTRACE-related handling code
    if ARRAY_SIZE(fixed_plts) == 0
    v3:
    * Only extend struct dyn_arch_ftrace when ARM_MODULE_PLTS is enabled
    v2:
    * As suggested by Steven Rostedt, refrain from tree-wide API modification,
      save module pointer in struct dyn_arch_ftrace instead (PowerPC way)

Alexander Sverdlin (2):
  ARM: PLT: Move struct plt_entries definition to header
  ARM: ftrace: Add MODULE_PLTS support

 arch/arm/include/asm/ftrace.h |  3 +++
 arch/arm/include/asm/module.h | 10 +++++++++
 arch/arm/kernel/ftrace.c      | 46 ++++++++++++++++++++++++++++++++++++++--
 arch/arm/kernel/module-plts.c | 49 +++++++++++++++++++++++++++++++++----------
 4 files changed, 95 insertions(+), 13 deletions(-)

-- 
2.10.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2021-03-24 16:48 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-27 11:09 [PATCH v7 0/2] ARM: Implement MODULE_PLT support in FTRACE Alexander A Sverdlin
2021-01-27 11:09 ` [PATCH v7 1/2] ARM: PLT: Move struct plt_entries definition to header Alexander A Sverdlin
2021-01-27 20:25   ` Florian Fainelli
2021-01-27 11:09 ` [PATCH v7 2/2] ARM: ftrace: Add MODULE_PLTS support Alexander A Sverdlin
2021-01-27 19:36   ` Florian Fainelli
2021-03-07 17:26   ` Qais Yousef
2021-03-08  7:58     ` Alexander Sverdlin
2021-03-09 17:42       ` Qais Yousef
2021-03-10  7:23         ` Alexander Sverdlin
2021-03-10 16:14           ` Florian Fainelli
2021-03-10 17:17             ` Alexander Sverdlin
2021-03-12 17:24               ` Qais Yousef
2021-03-12 18:35                 ` Florian Fainelli
2021-03-14 22:02                   ` Qais Yousef
2021-03-21 19:06                     ` Qais Yousef
2021-03-22 15:01                       ` Steven Rostedt
2021-03-22 16:32                         ` Qais Yousef
2021-03-22 17:02                           ` Alexander Sverdlin
2021-03-23 22:22                             ` Qais Yousef
2021-03-24  3:37                               ` Florian Fainelli
2021-03-24 16:10                                 ` Qais Yousef
2021-03-24  9:04                               ` Alexander Sverdlin
2021-03-24 15:57                                 ` Qais Yousef
2021-03-24 16:33                                   ` Alexander Sverdlin
2021-03-24 16:46                                     ` Qais Yousef
2021-03-15  9:19                   ` Alexander Sverdlin
2021-02-03 18:23 ` [PATCH v7 0/2] ARM: Implement MODULE_PLT support in FTRACE Florian Fainelli
2021-02-15 18:31   ` Ard Biesheuvel
2021-03-02  8:29     ` Linus Walleij
2021-03-02 10:00       ` Alexander Sverdlin

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).