Linux-parisc archive on lore.kernel.org
 help / color / Atom feed
* [PATCHv2 0/8] arm64: ftrace cleanup + FTRACE_WITH_REGS
@ 2019-10-29 16:58 Mark Rutland
  2019-10-29 16:58 ` [PATCHv2 1/8] ftrace: add ftrace_init_nop() Mark Rutland
                   ` (12 more replies)
  0 siblings, 13 replies; 48+ messages in thread
From: Mark Rutland @ 2019-10-29 16:58 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: linux-kernel, amit.kachhap, catalin.marinas, deller, duwe,
	James.Bottomley, james.morse, jeyu, jpoimboe, jthierry,
	linux-parisc, mark.rutland, mingo, peterz, rostedt, svens,
	takahiro.akashi, will

Hi,

This series is a reworked version of Torsten's FTRACE_WITH_REGS series
[1]. I've tried to rework the existing code in preparatory patches so
that the patchable-function-entry bits slot in with fewer surprises.
This version is based on v5.4-rc3, and can be found in my
arm64/ftrace-with-regs branch [2].

Patch 1 adds an (optional) ftrace_init_nop(), which the core code uses
to initialize callsites. This allows us to avoid a synthetic MCOUNT_ADDR
symbol, and more cleanly separates the one-time initialization of the
callsite from dynamic NOP<->CALL modification. Architectures which don't
implement this get the existing ftrace_make_nop() with MCOUNT_ADDR.

Recently parisc gained ftrace support using patchable-function-entry.
Patch 2 makes the handling of module callsite locations common in
kernel/module.c with a new FTRACE_CALLSITE_SECTION definition, and
removed the newly redundant bits from arch/parisc.

Patches 3 and 4 move the module PLT initialization to module load time,
which simplifies runtime callsite modification. This also means that we
don't transitently mark the module text RW, and will allow for the
removal of module_disable_ro().

Patches 5 and 6 add some trivial infrastructure, with patch 7 finally
adding FTRACE_WITH_REGS support. Additional work will be required for
livepatching (e.g. implementing reliable stack trace), which is
commented as part of patch 7.

Patch 8 is a trivial cleanup atop of the rest of the series, making the
code easier to read and less susceptible to config-specific breakage.

Since v1 [3]:
* Add a couple of people to Cc
* Fold in Ard's Reviewed-by tag
* Rename ftrace_code_init_disabled() to ftrace_nop_initialize()
* Move ftrace_init_nop() to <linux/ftrace.h>, with kerneldoc
* Update kerneldoc for rec parameters

Thanks,
Mark.

[1] https://lore.kernel.org/r/20190208150826.44EBC68DD2@newverein.lst.de
[2] git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arm64/ftrace-with-regs
[3] https://lore.kernel.org/r/20191021163426.9408-1-mark.rutland@arm.com

Mark Rutland (7):
  ftrace: add ftrace_init_nop()
  module/ftrace: handle patchable-function-entry
  arm64: module: rework special section handling
  arm64: module/ftrace: intialize PLT at load time
  arm64: insn: add encoder for MOV (register)
  arm64: asm-offsets: add S_FP
  arm64: ftrace: minimize ifdeffery

Torsten Duwe (1):
  arm64: implement ftrace with regs

 arch/arm64/Kconfig               |   2 +
 arch/arm64/Makefile              |   5 ++
 arch/arm64/include/asm/ftrace.h  |  23 +++++++
 arch/arm64/include/asm/insn.h    |   3 +
 arch/arm64/include/asm/module.h  |   2 +-
 arch/arm64/kernel/asm-offsets.c  |   1 +
 arch/arm64/kernel/entry-ftrace.S | 140 +++++++++++++++++++++++++++++++++++++--
 arch/arm64/kernel/ftrace.c       | 123 ++++++++++++++++++++--------------
 arch/arm64/kernel/insn.c         |  13 ++++
 arch/arm64/kernel/module-plts.c  |   3 +-
 arch/arm64/kernel/module.c       |  57 +++++++++++++---
 arch/parisc/Makefile             |   1 -
 arch/parisc/kernel/module.c      |  10 ++-
 arch/parisc/kernel/module.lds    |   7 --
 include/linux/ftrace.h           |  40 ++++++++++-
 kernel/module.c                  |   2 +-
 kernel/trace/ftrace.c            |   6 +-
 17 files changed, 355 insertions(+), 83 deletions(-)
 delete mode 100644 arch/parisc/kernel/module.lds

-- 
2.11.0


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

end of thread, back to index

Thread overview: 48+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-29 16:58 [PATCHv2 0/8] arm64: ftrace cleanup + FTRACE_WITH_REGS Mark Rutland
2019-10-29 16:58 ` [PATCHv2 1/8] ftrace: add ftrace_init_nop() Mark Rutland
2019-10-30 15:00   ` Miroslav Benes
2019-11-02 12:19   ` Amit Daniel Kachhap
2019-11-04 13:11     ` Steven Rostedt
2019-11-05  6:59       ` Amit Kachhap
2019-11-04 13:36     ` Mark Rutland
2019-11-05  6:47       ` Amit Kachhap
2019-11-06 14:15         ` Mark Rutland
2019-11-07  4:40           ` Amit Kachhap
2019-11-04 13:16   ` Steven Rostedt
2019-11-04 13:38     ` Mark Rutland
2019-11-04 13:53       ` Steven Rostedt
2019-10-29 16:58 ` [PATCHv2 2/8] module/ftrace: handle patchable-function-entry Mark Rutland
2019-10-30 15:03   ` Torsten Duwe
2019-10-31  9:02     ` Mark Rutland
2019-10-31 11:42       ` Torsten Duwe
2019-10-31 13:00         ` Mark Rutland
2019-11-04 13:28           ` Steven Rostedt
2019-11-04 14:00             ` Mark Rutland
2019-11-04 13:25   ` Steven Rostedt
2019-11-04 15:51   ` Mark Rutland
2019-11-04 20:58     ` Helge Deller
2019-11-05  8:59   ` Miroslav Benes
2019-10-29 16:58 ` [PATCHv2 3/8] arm64: module: rework special section handling Mark Rutland
2019-10-30 15:25   ` Miroslav Benes
2019-10-29 16:58 ` [PATCHv2 4/8] arm64: module/ftrace: intialize PLT at load time Mark Rutland
2019-11-02 12:20   ` Amit Daniel Kachhap
2019-11-04 13:55     ` Mark Rutland
2019-10-29 16:58 ` [PATCHv2 5/8] arm64: insn: add encoder for MOV (register) Mark Rutland
2019-10-29 16:58 ` [PATCHv2 6/8] arm64: asm-offsets: add S_FP Mark Rutland
2019-10-29 16:58 ` [PATCHv2 7/8] arm64: implement ftrace with regs Mark Rutland
2019-11-02 12:21   ` Amit Daniel Kachhap
2019-11-04 13:51     ` Mark Rutland
     [not found]   ` <CANW9uyug8WKN2fR-FmcW-C_OO_OQ_AvukM+BR7wqiJ9eFQMO9Q@mail.gmail.com>
2019-11-15  7:45     ` Torsten Duwe
2019-11-15 13:59     ` Mark Rutland
2019-10-29 16:58 ` [PATCHv2 8/8] arm64: ftrace: minimize ifdeffery Mark Rutland
2019-10-30 17:02 ` [PATCHv2 0/8] arm64: ftrace cleanup + FTRACE_WITH_REGS Torsten Duwe
2019-10-31 17:16 ` Torsten Duwe
2019-11-01  9:08   ` Mark Rutland
2019-11-01 15:39 ` Sven Schnelle
2019-11-01 16:28   ` Mark Rutland
2019-11-02 12:12 ` Amit Daniel Kachhap
2019-11-04 12:56   ` Will Deacon
2019-11-04 13:03     ` Amit Kachhap
2019-11-04 14:04       ` Mark Rutland
2019-11-05  7:06         ` Amit Kachhap
2019-11-07 11:31 ` Catalin Marinas

Linux-parisc archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-parisc/0 linux-parisc/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-parisc linux-parisc/ https://lore.kernel.org/linux-parisc \
		linux-parisc@vger.kernel.org
	public-inbox-index linux-parisc

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-parisc


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git