From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: "David S. Miller" <davem@davemloft.net>,
David Daney <david.daney@cavium.com>,
Michael Ellerman <michael@ellerman.id.au>,
Jan Glauber <jang@linux.vnet.ibm.com>,
Jason Baron <jbaron@redhat.com>,
the arch/x86 maintainers <x86@kernel.org>,
Xen Devel <xen-devel@lists.xensource.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Subject: [PATCH RFC V3 0/8] jump-label: allow early jump_label_enable()
Date: Tue, 4 Oct 2011 12:18:01 -0700 [thread overview]
Message-ID: <cover.1317755691.git.jeremy.fitzhardinge@citrix.com> (raw)
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
[ Change from V2: add arch_jump_label_transform_static() for use on
code which can't possibly be currently executing (ie, a freshly
loaded module), which can avoid heavyweight things like
stop_machine. The default implementation is simply
arch_jump_label_transform(), so only architectures which would
particularly benefit need implement it (x86 and s390 in this
series). ]
While trying to use the jump-label stuff for my PV ticketlock changes,
I had some problems using jump labels early in the kernel's lifetime
(pre-SMP).
The basic problem is that even if I enable a jump_label_key, the
jump_label_init() initializer ends up nopping out all the code sites.
This series enables early use of jump labels by making
jump_label_init() respect already-enabled keys.
To do this, I've dropped arch_jump_label_poke_text_early() and
replaced it with arch_jump_label_transform(), allowing it to either
insert an optimal nop, or leave the jump in place.
Part of this series makes sure that stop_machine() is safe to call
in an early pre-SMP environment, by making it just call the function
with interrupts disabled.
git://github.com/jsgf/linux-xen upstream/jump-label-noearly
Jeremy Fitzhardinge (8):
jump_label: use proper atomic_t initializer
stop_machine: make stop_machine safe and efficient to call early
jump_label: if a key has already been initialized, don't nop it out
x86/jump_label: drop arch_jump_label_text_poke_early()
sparc/jump_label: drop arch_jump_label_text_poke_early()
jump_label: add arch_jump_label_transform_static() to optimise
non-live code updates
s390/jump-label: add arch_jump_label_transform_static()
x86/jump_label: add arch_jump_label_transform_static()
arch/s390/kernel/jump_label.c | 51 ++++++++++++++++++++++++---------------
arch/sparc/kernel/jump_label.c | 8 ------
arch/x86/kernel/jump_label.c | 20 +++++++++++----
include/linux/jump_label.h | 9 ++++---
kernel/jump_label.c | 32 +++++++++++++++---------
kernel/stop_machine.c | 22 +++++++++++++++++
6 files changed, 92 insertions(+), 50 deletions(-)
--
1.7.6.4
next reply other threads:[~2011-10-04 19:18 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-04 19:18 Jeremy Fitzhardinge [this message]
2011-10-04 19:18 ` [PATCH RFC V3 1/8] jump_label: use proper atomic_t initializer Jeremy Fitzhardinge
2011-10-04 19:18 ` [PATCH RFC V3 2/8] stop_machine: make stop_machine safe and efficient to call early Jeremy Fitzhardinge
2011-10-05 1:15 ` Rusty Russell
2011-10-10 7:34 ` Ingo Molnar
2011-10-10 20:01 ` Jeremy Fitzhardinge
2011-10-12 7:34 ` Ingo Molnar
2011-10-12 7:45 ` Peter Zijlstra
2011-10-12 15:44 ` Jeremy Fitzhardinge
2011-10-04 19:18 ` [PATCH RFC V3 3/8] jump_label: if a key has already been initialized, don't nop it out Jeremy Fitzhardinge
2011-10-04 19:18 ` [PATCH RFC V3 4/8] x86/jump_label: drop arch_jump_label_text_poke_early() Jeremy Fitzhardinge
2011-10-04 19:18 ` [PATCH RFC V3 5/8] sparc/jump_label: " Jeremy Fitzhardinge
2011-10-04 19:18 ` [PATCH RFC V3 6/8] jump_label: add arch_jump_label_transform_static() to optimise non-live code updates Jeremy Fitzhardinge
2011-10-04 19:18 ` [PATCH RFC V3 7/8] s390/jump-label: add arch_jump_label_transform_static() Jeremy Fitzhardinge
2011-10-04 19:18 ` [PATCH RFC V3 8/8] x86/jump_label: " Jeremy Fitzhardinge
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.1317755691.git.jeremy.fitzhardinge@citrix.com \
--to=jeremy@goop.org \
--cc=davem@davemloft.net \
--cc=david.daney@cavium.com \
--cc=jang@linux.vnet.ibm.com \
--cc=jbaron@redhat.com \
--cc=jeremy.fitzhardinge@citrix.com \
--cc=linux-kernel@vger.kernel.org \
--cc=michael@ellerman.id.au \
--cc=rostedt@goodmis.org \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xensource.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 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.