From: Jason Baron <jbaron@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: mingo@elte.hu, mathieu.desnoyers@polymtl.ca, hpa@zytor.com,
tglx@linutronix.de, rostedt@goodmis.org, andi@firstfloor.org,
roland@redhat.com, rth@redhat.com, mhiramat@redhat.com,
fweisbec@gmail.com, avi@redhat.com, davem@davemloft.net,
vgoyal@redhat.com
Subject: [PATCH 00/13] jump label v8
Date: Wed, 19 May 2010 12:21:42 -0400 [thread overview]
Message-ID: <cover.1274283321.git.jbaron@redhat.com> (raw)
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
next reply other threads:[~2010-05-19 16:22 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-19 16:21 Jason Baron [this message]
2010-05-19 16:21 ` [PATCH 01/13] jump label v8: notifier atomic call chain notrace Jason Baron
2010-05-19 16:21 ` [PATCH 02/13] jump label v8: base patch Jason Baron
2010-05-19 16:21 ` [PATCH 03/13] jump label v8: x86 support Jason Baron
2010-05-19 16:22 ` [PATCH 04/13] jump label v8: tracepoint support Jason Baron
2010-05-19 16:22 ` [PATCH 05/13] jump label v8: add module support Jason Baron
2010-05-19 16:22 ` [PATCH 06/13] jump label v8: move ftrace_dyn_arch_init to common code Jason Baron
2010-05-19 16:22 ` [PATCH 07/13] jump label v8: sort jump table at build-time Jason Baron
2010-05-19 22:36 ` David Miller
2010-05-20 20:17 ` Jason Baron
2010-05-20 21:32 ` Mathieu Desnoyers
2010-05-24 20:14 ` Jason Baron
2010-05-20 22:24 ` David Miller
2010-05-19 16:22 ` [PATCH 08/13] jump label v8: initialize workqueue tracepoints *before* they are registered Jason Baron
2010-05-19 16:22 ` [PATCH 09/13] jump label v8: jump_label_text_reserved() to reserve our jump points Jason Baron
2010-05-19 16:22 ` [PATCH 10/13] jump label v8: add docs Jason Baron
2010-05-19 16:22 ` [PATCH 11/13] jump label v8: convert jump label to use a key Jason Baron
2010-05-19 16:22 ` [PATCH 12/13] jump label v8: convert dynamic debug to use jump labels Jason Baron
2010-05-19 16:22 ` [PATCH 13/13] jump label v8: sparc64 add jump_label support Jason Baron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1274283321.git.jbaron@redhat.com \
--to=jbaron@redhat.com \
--cc=andi@firstfloor.org \
--cc=avi@redhat.com \
--cc=davem@davemloft.net \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mhiramat@redhat.com \
--cc=mingo@elte.hu \
--cc=roland@redhat.com \
--cc=rostedt@goodmis.org \
--cc=rth@redhat.com \
--cc=tglx@linutronix.de \
--cc=vgoyal@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).