Jeremy Fitzhardinge
2011-Oct-04 19:18 UTC
[Xen-devel] [PATCH RFC V3 0/8] jump-label: allow early jump_label_enable()
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 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2011-Oct-04 19:18 UTC
[Xen-devel] [PATCH RFC V3 1/8] jump_label: use proper atomic_t initializer
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> ATOMIC_INIT() is the proper thing to use. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> --- include/linux/jump_label.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h index 66f23dc..1213e9d 100644 --- a/include/linux/jump_label.h +++ b/include/linux/jump_label.h @@ -28,9 +28,9 @@ struct module; #ifdef HAVE_JUMP_LABEL #ifdef CONFIG_MODULES -#define JUMP_LABEL_INIT {{ 0 }, NULL, NULL} +#define JUMP_LABEL_INIT {ATOMIC_INIT(0), NULL, NULL} #else -#define JUMP_LABEL_INIT {{ 0 }, NULL} +#define JUMP_LABEL_INIT {ATOMIC_INIT(0), NULL} #endif static __always_inline bool static_branch(struct jump_label_key *key) -- 1.7.6.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2011-Oct-04 19:18 UTC
[Xen-devel] [PATCH RFC V3 2/8] stop_machine: make stop_machine safe and efficient to call early
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Make stop_machine() safe to call early in boot, before stop_machine() has been set up, by simply calling the callback function directly if there''s only one CPU online. [ Fixes from AKPM: - add comment - local_irq_flags, not save_flags - also call hard_irq_disable() for systems which need it Tejun suggested using an explicit flag rather than just looking at the online cpu count. ] Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Acked-by: Tejun Heo <tj@kernel.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: H. Peter Anvin <hpa@linux.intel.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Steven Rostedt <rostedt@goodmis.org> --- kernel/stop_machine.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c index ba5070c..d3f960a 100644 --- a/kernel/stop_machine.c +++ b/kernel/stop_machine.c @@ -41,6 +41,7 @@ struct cpu_stopper { }; static DEFINE_PER_CPU(struct cpu_stopper, cpu_stopper); +static bool stop_machine_initialized = false; static void cpu_stop_init_done(struct cpu_stop_done *done, unsigned int nr_todo) { @@ -386,6 +387,8 @@ static int __init cpu_stop_init(void) cpu_stop_cpu_callback(&cpu_stop_cpu_notifier, CPU_ONLINE, bcpu); register_cpu_notifier(&cpu_stop_cpu_notifier); + stop_machine_initialized = true; + return 0; } early_initcall(cpu_stop_init); @@ -485,6 +488,25 @@ int __stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus) .num_threads = num_online_cpus(), .active_cpus = cpus }; + if (!stop_machine_initialized) { + /* + * Handle the case where stop_machine() is called + * early in boot before stop_machine() has been + * initialized. + */ + unsigned long flags; + int ret; + + WARN_ON_ONCE(smdata.num_threads != 1); + + local_irq_save(flags); + hard_irq_disable(); + ret = (*fn)(data); + local_irq_restore(flags); + + return ret; + } + /* Set the initial state and stop all online cpus. */ set_state(&smdata, STOPMACHINE_PREPARE); return stop_cpus(cpu_online_mask, stop_machine_cpu_stop, &smdata); -- 1.7.6.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2011-Oct-04 19:18 UTC
[Xen-devel] [PATCH RFC V3 3/8] jump_label: if a key has already been initialized, don''t nop it out
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> If a key has been enabled before jump_label_init() is called, don''t nop it out. This removes arch_jump_label_text_poke_early() (which can only nop out a site) and uses arch_jump_label_transform() instead. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> --- include/linux/jump_label.h | 3 +-- kernel/jump_label.c | 20 ++++++++------------ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h index 1213e9d..12e804e 100644 --- a/include/linux/jump_label.h +++ b/include/linux/jump_label.h @@ -44,8 +44,7 @@ extern struct jump_entry __stop___jump_table[]; extern void jump_label_lock(void); extern void jump_label_unlock(void); extern void arch_jump_label_transform(struct jump_entry *entry, - enum jump_label_type type); -extern void arch_jump_label_text_poke_early(jump_label_t addr); + enum jump_label_type type); extern int jump_label_text_reserved(void *start, void *end); extern void jump_label_inc(struct jump_label_key *key); extern void jump_label_dec(struct jump_label_key *key); diff --git a/kernel/jump_label.c b/kernel/jump_label.c index a8ce450..059202d5 100644 --- a/kernel/jump_label.c +++ b/kernel/jump_label.c @@ -121,13 +121,6 @@ static void __jump_label_update(struct jump_label_key *key, } } -/* - * Not all archs need this. - */ -void __weak arch_jump_label_text_poke_early(jump_label_t addr) -{ -} - static __init int jump_label_init(void) { struct jump_entry *iter_start = __start___jump_table; @@ -139,12 +132,15 @@ static __init int jump_label_init(void) jump_label_sort_entries(iter_start, iter_stop); for (iter = iter_start; iter < iter_stop; iter++) { - arch_jump_label_text_poke_early(iter->code); - if (iter->key == (jump_label_t)(unsigned long)key) + struct jump_label_key *iterk; + + iterk = (struct jump_label_key *)(unsigned long)iter->key; + arch_jump_label_transform(iter, jump_label_enabled(iterk) ? + JUMP_LABEL_ENABLE : JUMP_LABEL_DISABLE); + if (iterk == key) continue; - key = (struct jump_label_key *)(unsigned long)iter->key; - atomic_set(&key->enabled, 0); + key = iterk; key->entries = iter; #ifdef CONFIG_MODULES key->next = NULL; @@ -212,7 +208,7 @@ void jump_label_apply_nops(struct module *mod) return; for (iter = iter_start; iter < iter_stop; iter++) - arch_jump_label_text_poke_early(iter->code); + arch_jump_label_transform(iter, JUMP_LABEL_DISABLE); } static int jump_label_add_module(struct module *mod) -- 1.7.6.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2011-Oct-04 19:18 UTC
[Xen-devel] [PATCH RFC V3 4/8] x86/jump_label: drop arch_jump_label_text_poke_early()
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> It is no longer used. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: Jason Baron <jbaron@redhat.com> --- arch/x86/kernel/jump_label.c | 6 ------ 1 files changed, 0 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c index 3fee346..2ad0298 100644 --- a/arch/x86/kernel/jump_label.c +++ b/arch/x86/kernel/jump_label.c @@ -42,10 +42,4 @@ void arch_jump_label_transform(struct jump_entry *entry, put_online_cpus(); } -void arch_jump_label_text_poke_early(jump_label_t addr) -{ - text_poke_early((void *)addr, ideal_nops[NOP_ATOMIC5], - JUMP_LABEL_NOP_SIZE); -} - #endif -- 1.7.6.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2011-Oct-04 19:18 UTC
[Xen-devel] [PATCH RFC V3 5/8] sparc/jump_label: drop arch_jump_label_text_poke_early()
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> It is no longer used. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: David Miller <davem@davemloft.net> --- arch/sparc/kernel/jump_label.c | 8 -------- 1 files changed, 0 insertions(+), 8 deletions(-) diff --git a/arch/sparc/kernel/jump_label.c b/arch/sparc/kernel/jump_label.c index ea2dafc..971fd43 100644 --- a/arch/sparc/kernel/jump_label.c +++ b/arch/sparc/kernel/jump_label.c @@ -36,12 +36,4 @@ void arch_jump_label_transform(struct jump_entry *entry, put_online_cpus(); } -void arch_jump_label_text_poke_early(jump_label_t addr) -{ - u32 *insn_p = (u32 *) (unsigned long) addr; - - *insn_p = 0x01000000; - flushi(insn_p); -} - #endif -- 1.7.6.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2011-Oct-04 19:18 UTC
[Xen-devel] [PATCH RFC V3 6/8] jump_label: add arch_jump_label_transform_static() to optimise non-live code updates
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> When updating a newly loaded module, the code is definitely not yet executing on any processor, so it can be updated with no need for any heavyweight synchronization. This patch adds arch_jump_label_static() which is implemented as arch_jump_label_transform() by default, but architectures can override it if it avoids, say, a call to stop_machine(). Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> --- include/linux/jump_label.h | 2 ++ kernel/jump_label.c | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletions(-) diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h index 12e804e..56594e4 100644 --- a/include/linux/jump_label.h +++ b/include/linux/jump_label.h @@ -45,6 +45,8 @@ extern void jump_label_lock(void); extern void jump_label_unlock(void); extern void arch_jump_label_transform(struct jump_entry *entry, enum jump_label_type type); +extern void arch_jump_label_transform_static(struct jump_entry *entry, + enum jump_label_type type); extern int jump_label_text_reserved(void *start, void *end); extern void jump_label_inc(struct jump_label_key *key); extern void jump_label_dec(struct jump_label_key *key); diff --git a/kernel/jump_label.c b/kernel/jump_label.c index 059202d5..f0a9bef 100644 --- a/kernel/jump_label.c +++ b/kernel/jump_label.c @@ -104,6 +104,18 @@ static int __jump_label_text_reserved(struct jump_entry *iter_start, return 0; } +/* + * Update code which is definitely not currently executing. + * Architectures which need heavyweight synchronization to modify + * running code can override this to make the non-live update case + * cheaper. + */ +void __weak arch_jump_label_transform_static(struct jump_entry *entry, + enum jump_label_type type) +{ + arch_jump_label_transform(entry, type); +} + static void __jump_label_update(struct jump_label_key *key, struct jump_entry *entry, struct jump_entry *stop, int enable) @@ -208,7 +220,7 @@ void jump_label_apply_nops(struct module *mod) return; for (iter = iter_start; iter < iter_stop; iter++) - arch_jump_label_transform(iter, JUMP_LABEL_DISABLE); + arch_jump_label_transform_static(iter, JUMP_LABEL_DISABLE); } static int jump_label_add_module(struct module *mod) -- 1.7.6.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2011-Oct-04 19:18 UTC
[Xen-devel] [PATCH RFC V3 7/8] s390/jump-label: add arch_jump_label_transform_static()
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> This allows jump-label entries to be cheaply updated on code which is not yet live. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: Jan Glauber <jang@linux.vnet.ibm.com> --- arch/s390/kernel/jump_label.c | 51 +++++++++++++++++++++++++---------------- 1 files changed, 31 insertions(+), 20 deletions(-) diff --git a/arch/s390/kernel/jump_label.c b/arch/s390/kernel/jump_label.c index 44cc06b..b987ab2 100644 --- a/arch/s390/kernel/jump_label.c +++ b/arch/s390/kernel/jump_label.c @@ -18,26 +18,15 @@ struct insn { } __packed; struct insn_args { - unsigned long *target; - struct insn *insn; - ssize_t size; + struct jump_entry *entry; + enum jump_label_type type; }; -static int __arch_jump_label_transform(void *data) +static void __jump_label_transform(struct jump_entry *entry, + enum jump_label_type type) { - struct insn_args *args = data; - int rc; - - rc = probe_kernel_write(args->target, args->insn, args->size); - WARN_ON_ONCE(rc < 0); - return 0; -} - -void arch_jump_label_transform(struct jump_entry *entry, - enum jump_label_type type) -{ - struct insn_args args; struct insn insn; + int rc; if (type == JUMP_LABEL_ENABLE) { /* brcl 15,offset */ @@ -49,11 +38,33 @@ void arch_jump_label_transform(struct jump_entry *entry, insn.offset = 0; } - args.target = (void *) entry->code; - args.insn = &insn; - args.size = JUMP_LABEL_NOP_SIZE; + rc = probe_kernel_write((void *)entry->code, &insn, JUMP_LABEL_NOP_SIZE); + WARN_ON_ONCE(rc < 0); +} - stop_machine(__arch_jump_label_transform, &args, NULL); +static int __sm_arch_jump_label_transform(void *data) +{ + struct insn_args *args = data; + + __jump_label_transform(args->entry, args->type); + return 0; +} + +void arch_jump_label_transform(struct jump_entry *entry, + enum jump_label_type type) +{ + struct insn_args args; + + args.entry = entry; + args.type = type; + + stop_machine(__sm_arch_jump_label_transform, &args, NULL); +} + +void arch_jump_label_transform_static(struct jump_entry *entry, + enum jump_label_type type) +{ + __jump_label_transform(entry, type); } #endif -- 1.7.6.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2011-Oct-04 19:18 UTC
[Xen-devel] [PATCH RFC V3 8/8] x86/jump_label: add arch_jump_label_transform_static()
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> This allows jump-label entries to be cheaply updated on code which is not yet live. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: Jason Baron <jbaron@redhat.com> --- arch/x86/kernel/jump_label.c | 20 +++++++++++++++++--- 1 files changed, 17 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c index 2ad0298..ea9d5f2f 100644 --- a/arch/x86/kernel/jump_label.c +++ b/arch/x86/kernel/jump_label.c @@ -24,8 +24,9 @@ union jump_code_union { } __attribute__((packed)); }; -void arch_jump_label_transform(struct jump_entry *entry, - enum jump_label_type type) +static void __jump_label_transform(struct jump_entry *entry, + enum jump_label_type type, + void *(*poker)(void *, const void *, size_t)) { union jump_code_union code; @@ -35,11 +36,24 @@ void arch_jump_label_transform(struct jump_entry *entry, (entry->code + JUMP_LABEL_NOP_SIZE); } else memcpy(&code, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE); + + (*poker)((void *)entry->code, &code, JUMP_LABEL_NOP_SIZE); +} + +void arch_jump_label_transform(struct jump_entry *entry, + enum jump_label_type type) +{ get_online_cpus(); mutex_lock(&text_mutex); - text_poke_smp((void *)entry->code, &code, JUMP_LABEL_NOP_SIZE); + __jump_label_transform(entry, type, text_poke_smp); mutex_unlock(&text_mutex); put_online_cpus(); } +void arch_jump_label_transform_static(struct jump_entry *entry, + enum jump_label_type type) +{ + __jump_label_transform(entry, type, text_poke_early); +} + #endif -- 1.7.6.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Rusty Russell
2011-Oct-05 01:15 UTC
[Xen-devel] Re: [PATCH RFC V3 2/8] stop_machine: make stop_machine safe and efficient to call early
On Tue, 4 Oct 2011 12:18:03 -0700, Jeremy Fitzhardinge <jeremy@goop.org> wrote:> From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> > > Make stop_machine() safe to call early in boot, before stop_machine() > has been set up, by simply calling the callback function directly if > there''s only one CPU online.Not that you need this, since it''s >90% Tejun''s code now, but: Acked-by: Rusty Russell <rusty@rustcorp.com.au> Cheers, Rusty. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ingo Molnar
2011-Oct-10 07:34 UTC
[Xen-devel] Re: [PATCH RFC V3 2/8] stop_machine: make stop_machine safe and efficient to call early
* Rusty Russell <rusty@rustcorp.com.au> wrote:> On Tue, 4 Oct 2011 12:18:03 -0700, Jeremy Fitzhardinge <jeremy@goop.org> wrote: > > From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> > > > > Make stop_machine() safe to call early in boot, before stop_machine() > > has been set up, by simply calling the callback function directly if > > there''s only one CPU online. > > Not that you need this, since it''s >90% Tejun''s code now, but: > > Acked-by: Rusty Russell <rusty@rustcorp.com.au>hey, extra review is always useful. Jeremy, Tejun, what''s the expected merge path of these changes? Thanks, Ingo _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2011-Oct-10 20:01 UTC
[Xen-devel] Re: [PATCH RFC V3 2/8] stop_machine: make stop_machine safe and efficient to call early
On 10/10/2011 12:34 AM, Ingo Molnar wrote:> * Rusty Russell <rusty@rustcorp.com.au> wrote: > >> On Tue, 4 Oct 2011 12:18:03 -0700, Jeremy Fitzhardinge <jeremy@goop.org> wrote: >>> From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> >>> >>> Make stop_machine() safe to call early in boot, before stop_machine() >>> has been set up, by simply calling the callback function directly if >>> there''s only one CPU online. >> Not that you need this, since it''s >90% Tejun''s code now, but: >> >> Acked-by: Rusty Russell <rusty@rustcorp.com.au> > hey, extra review is always useful. > > Jeremy, Tejun, what''s the expected merge path of these changes?Andrew has already picked up the stop_machine patch, I think. But it''s pretty settled now, so it shouldn''t cause any problem if it gets via multiple paths. What about the jump-label stuff? Has that been going via tip.git in the past, or by some other path? J _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ingo Molnar
2011-Oct-12 07:34 UTC
[Xen-devel] Re: [PATCH RFC V3 2/8] stop_machine: make stop_machine safe and efficient to call early
* Jeremy Fitzhardinge <jeremy@goop.org> wrote:> On 10/10/2011 12:34 AM, Ingo Molnar wrote: > > * Rusty Russell <rusty@rustcorp.com.au> wrote: > > > >> On Tue, 4 Oct 2011 12:18:03 -0700, Jeremy Fitzhardinge <jeremy@goop.org> wrote: > >>> From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> > >>> > >>> Make stop_machine() safe to call early in boot, before stop_machine() > >>> has been set up, by simply calling the callback function directly if > >>> there''s only one CPU online. > >> Not that you need this, since it''s >90% Tejun''s code now, but: > >> > >> Acked-by: Rusty Russell <rusty@rustcorp.com.au> > > hey, extra review is always useful. > > > > Jeremy, Tejun, what''s the expected merge path of these changes? > > Andrew has already picked up the stop_machine patch, I think. But it''s > pretty settled now, so it shouldn''t cause any problem if it gets via > multiple paths. > > What about the jump-label stuff? Has that been going via tip.git in the > past, or by some other path?If it has Jason''s and PeterZ''s ack then it can go via any other tree in this cycle - we are not carrying jump label patches right now. But those acks are very much desired. Thanks, Ingo _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Peter Zijlstra
2011-Oct-12 07:45 UTC
[Xen-devel] Re: [PATCH RFC V3 2/8] stop_machine: make stop_machine safe and efficient to call early
On Wed, 2011-10-12 at 09:34 +0200, Ingo Molnar wrote:> > If it has Jason''s and PeterZ''s ack then it can go via any other tree > in this cycle - we are not carrying jump label patches right now.I don''t seem to have them in my inbox, just one or two patches of a larger series. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2011-Oct-12 15:44 UTC
[Xen-devel] Re: [PATCH RFC V3 2/8] stop_machine: make stop_machine safe and efficient to call early
On 10/12/2011 12:34 AM, Ingo Molnar wrote:> * Jeremy Fitzhardinge <jeremy@goop.org> wrote: > >> On 10/10/2011 12:34 AM, Ingo Molnar wrote: >>> * Rusty Russell <rusty@rustcorp.com.au> wrote: >>> >>>> On Tue, 4 Oct 2011 12:18:03 -0700, Jeremy Fitzhardinge <jeremy@goop.org> wrote: >>>>> From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> >>>>> >>>>> Make stop_machine() safe to call early in boot, before stop_machine() >>>>> has been set up, by simply calling the callback function directly if >>>>> there''s only one CPU online. >>>> Not that you need this, since it''s >90% Tejun''s code now, but: >>>> >>>> Acked-by: Rusty Russell <rusty@rustcorp.com.au> >>> hey, extra review is always useful. >>> >>> Jeremy, Tejun, what''s the expected merge path of these changes? >> Andrew has already picked up the stop_machine patch, I think. But it''s >> pretty settled now, so it shouldn''t cause any problem if it gets via >> multiple paths. >> >> What about the jump-label stuff? Has that been going via tip.git in the >> past, or by some other path? > If it has Jason''s and PeterZ''s ack then it can go via any other tree > in this cycle - we are not carrying jump label patches right now. > > But those acks are very much desired.Jason has already Acked it, but then pointed out a couple of problems to address. I''ll add PeterZ to the next repost. J _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel