All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7 0/2] ARM: Implement MODULE_PLT support in FTRACE
@ 2021-01-27 11:09 ` Alexander A Sverdlin
  0 siblings, 0 replies; 60+ 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


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

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

Thread overview: 60+ 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 ` 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 11:09   ` Alexander A Sverdlin
2021-01-27 20:25   ` Florian Fainelli
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 11:09   ` Alexander A Sverdlin
2021-01-27 19:36   ` Florian Fainelli
2021-01-27 19:36     ` Florian Fainelli
2021-03-07 17:26   ` Qais Yousef
2021-03-07 17:26     ` Qais Yousef
2021-03-08  7:58     ` Alexander Sverdlin
2021-03-08  7:58       ` Alexander Sverdlin
2021-03-09 17:42       ` Qais Yousef
2021-03-09 17:42         ` Qais Yousef
2021-03-10  7:23         ` Alexander Sverdlin
2021-03-10  7:23           ` Alexander Sverdlin
2021-03-10 16:14           ` Florian Fainelli
2021-03-10 16:14             ` Florian Fainelli
2021-03-10 17:17             ` Alexander Sverdlin
2021-03-10 17:17               ` Alexander Sverdlin
2021-03-12 17:24               ` Qais Yousef
2021-03-12 17:24                 ` Qais Yousef
2021-03-12 18:35                 ` Florian Fainelli
2021-03-12 18:35                   ` Florian Fainelli
2021-03-14 22:02                   ` Qais Yousef
2021-03-14 22:02                     ` Qais Yousef
2021-03-21 19:06                     ` Qais Yousef
2021-03-21 19:06                       ` Qais Yousef
2021-03-22 15:01                       ` Steven Rostedt
2021-03-22 15:01                         ` Steven Rostedt
2021-03-22 16:32                         ` Qais Yousef
2021-03-22 16:32                           ` Qais Yousef
2021-03-22 17:02                           ` Alexander Sverdlin
2021-03-22 17:02                             ` Alexander Sverdlin
2021-03-23 22:22                             ` Qais Yousef
2021-03-23 22:22                               ` Qais Yousef
2021-03-24  3:37                               ` Florian Fainelli
2021-03-24  3:37                                 ` Florian Fainelli
2021-03-24 16:10                                 ` Qais Yousef
2021-03-24 16:10                                   ` Qais Yousef
2021-03-24  9:04                               ` Alexander Sverdlin
2021-03-24  9:04                                 ` Alexander Sverdlin
2021-03-24 15:57                                 ` Qais Yousef
2021-03-24 15:57                                   ` Qais Yousef
2021-03-24 16:33                                   ` Alexander Sverdlin
2021-03-24 16:33                                     ` Alexander Sverdlin
2021-03-24 16:46                                     ` Qais Yousef
2021-03-24 16:46                                       ` Qais Yousef
2021-03-15  9:19                   ` Alexander Sverdlin
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-03 18:23   ` Florian Fainelli
2021-02-15 18:31   ` Ard Biesheuvel
2021-02-15 18:31     ` Ard Biesheuvel
2021-03-02  8:29     ` Linus Walleij
2021-03-02  8:29       ` Linus Walleij
2021-03-02 10:00       ` Alexander Sverdlin
2021-03-02 10:00         ` Alexander Sverdlin

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.