Skip to content

jump label v8

Jason Baron linux-kbuild lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest13 patches 8 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/13jump label v8: notifier atomic call chain notracekernel/notifier.c+3 -30 replies
2/13jump label v8: base patcharch/Kconfig include/asm-generic/vmlinux.lds.h include/linux/jump_label.h +2 more+250 -20 replies
3/13jump label v8: x86 supportarch/x86/Kconfig arch/x86/include/asm/jump_entry.h arch/x86/include/asm/jump_label.h +2 more+117 -10 replies
4/13jump label v8: tracepoint supportinclude/linux/tracepoint.h kernel/tracepoint.c+27 -150 replies
5/13jump label v8: add module supportarch/x86/kernel/ptrace.c include/linux/jump_label.h include/linux/module.h +2 more+150 -20 replies
6/13jump label v8: move ftrace_dyn_arch_init to common codearch/x86/include/asm/alternative.h arch/x86/include/asm/jump_label.h arch/x86/kernel/alternative.c +7 more+140 -1060 replies
7/13jump label v8: sort jump table at build-timeMakefile include/asm-generic/vmlinux.lds.h scripts/mod/Makefile +2 more+91 -75 replies
8/13jump label v8: initialize workqueue tracepoints *before* they are registeredkernel/trace/trace_workqueue.c+5 -50 replies
9/13jump label v8: jump_label_text_reserved() to reserve our jump pointsarch/x86/kernel/kprobes.c include/linux/jump_label.h kernel/jump_label.c +1 more+93 -20 replies
10/13jump label v8: add docsDocumentation/jump-label.txt+143 -00 replies
11/13jump label v8: convert jump label to use a keyarch/x86/include/asm/jump_entry.h arch/x86/include/asm/jump_label.h include/linux/jump_label.h +5 more+45 -720 replies
12/13jump label v8: convert dynamic debug to use jump labels.include/linux/dynamic_debug.h lib/dynamic_debug.c scripts/Makefile.lib +2 more+27 -1340 replies
13/13jump label v8: sparc64 add jump_label supportarch/sparc/Kconfig arch/sparc/include/asm/jump_entry.h arch/sparc/include/asm/jump_label.h +3 more+85 -00 replies

Reviews trailers per patch

2 of 13 patches have a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchMasami HiramatsuSteven Rostedt
SeriesA-b
1/13R-b
2/13
3/13
4/13
5/13
6/13
7/13
8/13
9/13A-b
10/13
11/13
12/13
13/13

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH 00/13] jump label v8

Hi,

updates for -v8:

*converted jump labels to use a numeric key instead of a string to identify sets of related jump labels. this saves space, since we no longer store all the strings. It also simplifies the jump label call as:

-# define JUMP_LABEL(tag, label, cond)
+# define JUMP_LABEL(key, label)

since we can use &cond for as the key value

*added 'dynamic debug' code as another consumer of the jump label code (in addition to tracepoints). It would be interesting to identify further codepaths that would benefit from this type of optimization

*added a depends on !CC_OPTIMIZE_FOR_SIZE. When CC_OPTIMIZE_FOR_SIZE is set, gcc does not always out of line the not taken label path in the same way that the "if unlikely()" paths are made out of line. Thus, with CC_OPTIMIZE_FOR_SIZE set, this optimization is not always optimal. This may be solved in subsequent gcc versions, that allow us to move labels out of line, while still optimizing for size. In the case of !CC_OPTIMIZE_FOR_SIZE this optimization is seen on high level benchmarks such as tbench where I can get ~1-2% higher throughput. In addition we are within .5% of the performance of no tracepoints compiled in at all.

thanks,

-Jason

David S. Miller (1):
sparc64: Add jump_label support

Jason Baron (11):
jump label: base patch
jump label: x86 support
jump label: tracepoint support
jump label: add module support
jump label: move ftrace_dyn_arch_init to common code jump label: sort jump table at build-time
jump label: initialize workqueue tracepoints *before* they are
registered
jump label: jump_label_text_reserved() to reserve our jump points jump label: add docs
jump label: convert jump label to use a key
jump label: convert dynamic debug to use jump labels.

Mathieu Desnoyers (1):
jump label: notifier atomic call chain notrace

 Documentation/jump-label.txt        |  143 ++++++++++++
 Makefile                            |    6 +-
 arch/Kconfig                        |    3 +
 arch/sparc/Kconfig                  |    1 +
 arch/sparc/include/asm/jump_entry.h |   18 ++
 arch/sparc/include/asm/jump_label.h |   20 ++
 arch/sparc/kernel/Makefile          |    2 +
 arch/sparc/kernel/jump_label.c      |   38 +++
 arch/sparc/kernel/module.c          |    6 +
 arch/x86/Kconfig                    |    1 +
 arch/x86/include/asm/alternative.h  |   14 ++
 arch/x86/include/asm/jump_entry.h   |   32 +++
 arch/x86/include/asm/jump_label.h   |   22 ++
 arch/x86/kernel/Makefile            |    2 +-
 arch/x86/kernel/alternative.c       |   72 ++++++-
 arch/x86/kernel/ftrace.c            |   70 +------
 arch/x86/kernel/jump_label.c        |   47 ++++
 arch/x86/kernel/kprobes.c           |    3 +-
 arch/x86/kernel/module.c            |    3 +
 arch/x86/kernel/ptrace.c            |    1 +
 arch/x86/kernel/setup.c             |    3 +
 include/asm-generic/vmlinux.lds.h   |   22 ++-
 include/linux/dynamic_debug.h       |   42 ++--
 include/linux/jump_label.h          |   61 +++++
 include/linux/module.h              |    5 +-
 include/linux/tracepoint.h          |   33 ++--
 kernel/Makefile                     |    2 +-
 kernel/jump_label.c                 |  426 +++++++++++++++++++++++++++++++++++
 kernel/kprobes.c                    |    3 +-
 kernel/module.c                     |    7 +
 kernel/notifier.c                   |    6 +-
 kernel/trace/ftrace.c               |   13 +-
 kernel/trace/trace_workqueue.c      |   10 +-
 kernel/tracepoint.c                 |    8 +
 lib/dynamic_debug.c                 |   42 +----
 scripts/Makefile.lib                |   11 +-
 scripts/basic/Makefile              |    2 +-
 scripts/basic/hash.c                |   64 ------
 scripts/mod/Makefile                |    1 +
 scripts/mod/modpost.c               |   61 +++++-
 scripts/mod/modpost.h               |    1 +
 41 files changed, 1077 insertions(+), 250 deletions(-)
 create mode 100644 Documentation/jump-label.txt
 create mode 100644 arch/sparc/include/asm/jump_entry.h
 create mode 100644 arch/sparc/include/asm/jump_label.h
 create mode 100644 arch/sparc/kernel/jump_label.c
 create mode 100644 arch/x86/include/asm/jump_entry.h
 create mode 100644 arch/x86/include/asm/jump_label.h
 create mode 100644 arch/x86/kernel/jump_label.c
 create mode 100644 include/linux/jump_label.h
 create mode 100644 kernel/jump_label.c
 delete mode 100644 scripts/basic/hash.c