All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/27] Generic framework for SMP booting/CPU hotplug related code
@ 2012-06-01  9:10 Srivatsa S. Bhat
  2012-06-01  9:10   ` Srivatsa S. Bhat
                   ` (27 more replies)
  0 siblings, 28 replies; 198+ messages in thread
From: Srivatsa S. Bhat @ 2012-06-01  9:10 UTC (permalink / raw)
  To: tglx, peterz, paulmck
  Cc: rusty, mingo, yong.zhang0, akpm, vatsa, rjw, linux-arch,
	linux-kernel, srivatsa.bhat, nikunj

This patchset is an effort to reduce the SMP booting/CPU hotplug related code
duplication in various architectures and pull them out into core code.
Consolidating the code at one place makes it more maintainable and less
error-prone.

There is still a lot of opportunity to pull out more stuff from the arch/
directories into core code than what this patchset does, but this does the
ground-work on top of which we can make more and more code generic.

This applies on top of tip tree's smp/hotplug branch + Yong's ipi_call_lock
cleanup patches[1].

The patch descriptions of some of the arch/ patches contain a section called
"Notes" which documents some of the non-trivial changes implemented in that
patch. This section is to help bring maintainer attention to those code
pieces so that if its wrong for that arch, they can point it out and I'll
work on fixing it.


Acknowledgements:
----------------

Thanks a lot to Paul McKenney for his guidance and for consolidating a
comprehensive list of what needs to be done to make CPU Hotplug better [2]
and [3]. Many thanks to Peter Zijlstra for complaining about the code
duplication in various architectures and pointing out what is missing and
what needs to be worked on.

Also, many thanks to Thomas Gleixner for his initiative to make smp booting
generic and sane, and for his whole bunch of cleanups in that direction.
I hope this patchset can contribute to that effort :-)

References:
[1]. http://marc.info/?l=linux-kernel&m=133827595625509&w=2
[2]. https://lkml.org/lkml/2012/4/9/198
[3]. https://lkml.org/lkml/2012/4/5/379
--
 Nikunj A. Dadhania (9):
      um, smpboot: Use generic SMP booting infrastructure
      sparc64, smpboot: Use generic SMP booting infrastructure
      blackfin, smpboot: Use generic SMP booting infrastructure
      powerpc, smpboot: Use generic SMP booting infrastructure
      mn10300, smpboot: Use generic SMP booting infrastructure
      ia64, smpboot: Use generic SMP booting infrastructure
      hexagon, smpboot: Use generic SMP booting infrastructure
      x86, smpboot: Use generic SMP booting infrastructure
      smpboot: Provide a generic method to boot secondary processors

Srivatsa S. Bhat (18):
      alpha, smpboot: Use generic SMP booting infrastructure
      arm, smpboot: Use generic SMP booting infrastructure
      s390, smpboot: Use generic SMP booting infrastructure
      parisc, smpboot: Use generic SMP booting infrastructure
      cris, smpboot: Use generic SMP booting infrastructure
      sparc32, smpboot: Use generic SMP booting infrastructure
      mn10300: Fix horrible logic in smp_prepare_cpus()
      ia64: Move holding of vector_lock to __setup_vector_irq()
      tile, smpboot: Use generic SMP booting infrastructure
      sh, smpboot: Use generic SMP booting infrastructure
      mips, smpboot: Use generic SMP booting infrastructure
      m32r, smpboot: Use generic SMP booting infrastructure
      m32r: Fix horrible logic in smp_prepare_cpus()
      xen, smpboot: Use generic SMP booting infrastructure
      xen, cpu hotplug: Don't call cpu_bringup() in xen_play_dead()
      smpboot, x86, xen: Determine smp booting implementations at run-time
      smpboot: Define and use cpu_state per-cpu variable in generic code
      smpboot: Add provisions for arch-specific locking around cpu_online_mask


  arch/alpha/kernel/smp.c           |   27 ++++++-----
 arch/arm/kernel/smp.c             |   26 +++++------
 arch/blackfin/mach-bf561/smp.c    |    1 
 arch/blackfin/mach-common/smp.c   |   16 ++++---
 arch/cris/arch-v32/kernel/smp.c   |   14 ++----
 arch/hexagon/kernel/smp.c         |   18 +++----
 arch/ia64/include/asm/cpu.h       |    2 -
 arch/ia64/kernel/irq_ia64.c       |   21 ++++++++-
 arch/ia64/kernel/process.c        |    1 
 arch/ia64/kernel/smpboot.c        |   46 +++++++++----------
 arch/m32r/kernel/smpboot.c        |   50 ++++++++++----------
 arch/mips/cavium-octeon/smp.c     |    4 --
 arch/mips/kernel/smp-cmp.c        |    8 ++-
 arch/mips/kernel/smp-mt.c         |    2 -
 arch/mips/kernel/smp.c            |   23 ++++++---
 arch/mips/kernel/sync-r4k.c       |    3 +
 arch/mn10300/kernel/smp.c         |   36 +++++----------
 arch/parisc/kernel/smp.c          |   30 ++++++------
 arch/powerpc/kernel/smp.c         |   32 +++++++------
 arch/s390/kernel/smp.c            |   12 ++---
 arch/sh/include/asm/smp.h         |    2 -
 arch/sh/kernel/smp.c              |   23 ++++-----
 arch/sparc/kernel/hvtramp.S       |    1 
 arch/sparc/kernel/leon_smp.c      |   25 ++++++----
 arch/sparc/kernel/smp_64.c        |   18 ++++---
 arch/sparc/kernel/sun4d_smp.c     |   26 +++++------
 arch/sparc/kernel/sun4m_smp.c     |   26 ++++++-----
 arch/sparc/kernel/trampoline_32.S |    1 
 arch/sparc/kernel/trampoline_64.S |    1 
 arch/tile/kernel/smpboot.c        |   26 ++++-------
 arch/um/kernel/smp.c              |   12 +++--
 arch/x86/include/asm/cpu.h        |    2 -
 arch/x86/include/asm/smp.h        |   25 ++++++++++
 arch/x86/kernel/apic/io_apic.c    |   15 ++++++
 arch/x86/kernel/smp.c             |    4 ++
 arch/x86/kernel/smpboot.c         |   43 ++++++-----------
 arch/x86/xen/smp.c                |   30 ++----------
 include/linux/smpboot.h           |   11 ++++
 kernel/smpboot.c                  |   91 +++++++++++++++++++++++++++++++++++++
 kernel/smpboot.h                  |    4 +-
 40 files changed, 437 insertions(+), 321 deletions(-)
 create mode 100644 include/linux/smpboot.h



Thanks,
Srivatsa S. Bhat
IBM Linux Technology Center

^ permalink raw reply	[flat|nested] 198+ messages in thread
* [PATCH] sparc32: refactor smp boot
@ 2013-02-15 15:19 Sam Ravnborg
  2013-02-15 19:37 ` Srivatsa S. Bhat
  2013-02-19  5:57 ` David Miller
  0 siblings, 2 replies; 198+ messages in thread
From: Sam Ravnborg @ 2013-02-15 15:19 UTC (permalink / raw)
  To: sparclinux

From 1bf0fa77f722275cf7c7be0fbb80e4399f60c734 Mon Sep 17 00:00:00 2001
From: Sam Ravnborg <sam@ravnborg.org>
Date: Fri, 15 Feb 2013 15:52:06 +0100
Subject: [PATCH] sparc32: refactor smp boot

Introduce a common smp_callin() function to call
from trampoline_32.S.
Add platform specific functions to handle the
platform details.

This is in preparation for a patch that will
unify the smp boot stuff for all architectures.
sparc32 was significantly different to warrant
this patch in preparation.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Acked-by: David S. Miller <davem@davemloft.net>
Cc: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
---

Hi David.

I have had this patch lingering for a long time now.
Can you please apply it to sparc.

Then it has hopefully hit mainline before Srivatsa re-visits
the smpboot stuff.

	Sam


 arch/sparc/kernel/kernel.h        |   12 +++++
 arch/sparc/kernel/leon_smp.c      |   33 ++++----------
 arch/sparc/kernel/smp_32.c        |   86 +++++++++++++++++++++++++++++++++++++
 arch/sparc/kernel/sun4d_smp.c     |   29 ++++---------
 arch/sparc/kernel/sun4m_smp.c     |   33 ++++----------
 arch/sparc/kernel/trampoline_32.S |   17 +++----
 6 files changed, 132 insertions(+), 78 deletions(-)

diff --git a/arch/sparc/kernel/kernel.h b/arch/sparc/kernel/kernel.h
index 291bb5d..a702d9a 100644
--- a/arch/sparc/kernel/kernel.h
+++ b/arch/sparc/kernel/kernel.h
@@ -48,6 +48,10 @@ extern void sun4m_init_IRQ(void);
 extern void sun4m_unmask_profile_irq(void);
 extern void sun4m_clear_profile_irq(int cpu);
 
+/* sun4m_smp.c */
+void sun4m_cpu_pre_starting(void *arg);
+void sun4m_cpu_pre_online(void *arg);
+
 /* sun4d_irq.c */
 extern spinlock_t sun4d_imsk_lock;
 
@@ -60,6 +64,14 @@ extern int show_sun4d_interrupts(struct seq_file *, void *);
 extern void sun4d_distribute_irqs(void);
 extern void sun4d_free_irq(unsigned int irq, void *dev_id);
 
+/* sun4d_smp.c */
+void sun4d_cpu_pre_starting(void *arg);
+void sun4d_cpu_pre_online(void *arg);
+
+/* leon_smp.c */
+void leon_cpu_pre_starting(void *arg);
+void leon_cpu_pre_online(void *arg);
+
 /* head_32.S */
 extern unsigned int t_nmi[];
 extern unsigned int linux_trap_ipi15_sun4d[];
diff --git a/arch/sparc/kernel/leon_smp.c b/arch/sparc/kernel/leon_smp.c
index 0f3fb6d..9b40c9c 100644
--- a/arch/sparc/kernel/leon_smp.c
+++ b/arch/sparc/kernel/leon_smp.c
@@ -69,31 +69,19 @@ static inline unsigned long do_swap(volatile unsigned long *ptr,
 	return val;
 }
 
-void __cpuinit leon_callin(void)
+void __cpuinit leon_cpu_pre_starting(void *arg)
 {
-	int cpuid = hard_smp_processor_id();
-
-	local_ops->cache_all();
-	local_ops->tlb_all();
 	leon_configure_cache_smp();
+}
 
-	notify_cpu_starting(cpuid);
-
-	/* Get our local ticker going. */
-	register_percpu_ce(cpuid);
-
-	calibrate_delay();
-	smp_store_cpu_info(cpuid);
-
-	local_ops->cache_all();
-	local_ops->tlb_all();
+void __cpuinit leon_cpu_pre_online(void *arg)
+{
+	int cpuid = hard_smp_processor_id();
 
-	/*
-	 * Unblock the master CPU _only_ when the scheduler state
-	 * of all secondary CPUs will be up-to-date, so after
-	 * the SMP initialization the master will be just allowed
-	 * to call the scheduler code.
-	 * Allow master to continue.
+	/* Allow master to continue. The master will then give us the
+	 * go-ahead by setting the smp_commenced_mask and will wait without
+	 * timeouts until our setup is completed fully (signified by
+	 * our bit being set in the cpu_online_mask).
 	 */
 	do_swap(&cpu_callin_map[cpuid], 1);
 
@@ -110,9 +98,6 @@ void __cpuinit leon_callin(void)
 
 	while (!cpumask_test_cpu(cpuid, &smp_commenced_mask))
 		mb();
-
-	local_irq_enable();
-	set_cpu_online(cpuid, true);
 }
 
 /*
diff --git a/arch/sparc/kernel/smp_32.c b/arch/sparc/kernel/smp_32.c
index 79db45e..9e7e6d7 100644
--- a/arch/sparc/kernel/smp_32.c
+++ b/arch/sparc/kernel/smp_32.c
@@ -20,6 +20,7 @@
 #include <linux/seq_file.h>
 #include <linux/cache.h>
 #include <linux/delay.h>
+#include <linux/cpu.h>
 
 #include <asm/ptrace.h>
 #include <linux/atomic.h>
@@ -32,8 +33,10 @@
 #include <asm/cacheflush.h>
 #include <asm/tlbflush.h>
 #include <asm/cpudata.h>
+#include <asm/timer.h>
 #include <asm/leon.h>
 
+#include "kernel.h"
 #include "irq.h"
 
 volatile unsigned long cpu_callin_map[NR_CPUS] __cpuinitdata = {0,};
@@ -294,6 +297,89 @@ int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle)
 	return ret;
 }
 
+void __cpuinit arch_cpu_pre_starting(void *arg)
+{
+	local_ops->cache_all();
+	local_ops->tlb_all();
+
+	switch(sparc_cpu_model) {
+	case sun4m:
+		sun4m_cpu_pre_starting(arg);
+		break;
+	case sun4d:
+		sun4d_cpu_pre_starting(arg);
+		break;
+	case sparc_leon:
+		leon_cpu_pre_starting(arg);
+		break;
+	default:
+		BUG();
+	}
+}
+
+void __cpuinit arch_cpu_pre_online(void *arg)
+{
+	unsigned int cpuid = hard_smp_processor_id();
+
+	register_percpu_ce(cpuid);
+
+	calibrate_delay();
+	smp_store_cpu_info(cpuid);
+
+	local_ops->cache_all();
+	local_ops->tlb_all();
+
+	switch(sparc_cpu_model) {
+	case sun4m:
+		sun4m_cpu_pre_online(arg);
+		break;
+	case sun4d:
+		sun4d_cpu_pre_online(arg);
+		break;
+	case sparc_leon:
+		leon_cpu_pre_online(arg);
+		break;
+	default:
+		BUG();
+	}
+}
+
+void __cpuinit sparc_start_secondary(void *arg)
+{
+	unsigned int cpu;
+
+	/*
+	 * SMP booting is extremely fragile in some architectures. So run
+	 * the cpu initialization code first before anything else.
+	 */
+	arch_cpu_pre_starting(arg);
+
+	preempt_disable();
+	cpu = smp_processor_id();
+
+	/* Invoke the CPU_STARTING notifier callbacks */
+	notify_cpu_starting(cpu);
+
+	arch_cpu_pre_online(arg);
+
+	/* Set the CPU in the cpu_online_mask */
+	set_cpu_online(cpu, true);
+
+	/* Enable local interrupts now */
+	local_irq_enable();
+
+	wmb();
+	cpu_idle();
+
+	/* We should never reach here! */
+	BUG();
+}
+
+void __cpuinit smp_callin(void)
+{
+	sparc_start_secondary(NULL);
+}
+
 void smp_bogo(struct seq_file *m)
 {
 	int i;
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c
index ddaea31..c9eb82f 100644
--- a/arch/sparc/kernel/sun4d_smp.c
+++ b/arch/sparc/kernel/sun4d_smp.c
@@ -50,10 +50,9 @@ static inline void show_leds(int cpuid)
 			      "i" (ASI_M_CTL));
 }
 
-void __cpuinit smp4d_callin(void)
+void __cpuinit sun4d_cpu_pre_starting(void *arg)
 {
 	int cpuid = hard_smp_processor_id();
-	unsigned long flags;
 
 	/* Show we are alive */
 	cpu_leds[cpuid] = 0x6;
@@ -61,26 +60,20 @@ void __cpuinit smp4d_callin(void)
 
 	/* Enable level15 interrupt, disable level14 interrupt for now */
 	cc_set_imsk((cc_get_imsk() & ~0x8000) | 0x4000);
+}
 
-	local_ops->cache_all();
-	local_ops->tlb_all();
+void __cpuinit sun4d_cpu_pre_online(void *arg)
+{
+	unsigned long flags;
+	int cpuid;
 
-	notify_cpu_starting(cpuid);
-	/*
-	 * Unblock the master CPU _only_ when the scheduler state
+	cpuid = hard_smp_processor_id();
+
+	/* Unblock the master CPU _only_ when the scheduler state
 	 * of all secondary CPUs will be up-to-date, so after
 	 * the SMP initialization the master will be just allowed
 	 * to call the scheduler code.
 	 */
-	/* Get our local ticker going. */
-	register_percpu_ce(cpuid);
-
-	calibrate_delay();
-	smp_store_cpu_info(cpuid);
-	local_ops->cache_all();
-	local_ops->tlb_all();
-
-	/* Allow master to continue. */
 	sun4d_swap((unsigned long *)&cpu_callin_map[cpuid], 1);
 	local_ops->cache_all();
 	local_ops->tlb_all();
@@ -106,16 +99,12 @@ void __cpuinit smp4d_callin(void)
 	local_ops->cache_all();
 	local_ops->tlb_all();
 
-	local_irq_enable();	/* We don't allow PIL 14 yet */
-
 	while (!cpumask_test_cpu(cpuid, &smp_commenced_mask))
 		barrier();
 
 	spin_lock_irqsave(&sun4d_imsk_lock, flags);
 	cc_set_imsk(cc_get_imsk() & ~0x4000); /* Allow PIL 14 as well */
 	spin_unlock_irqrestore(&sun4d_imsk_lock, flags);
-	set_cpu_online(cpuid, true);
-
 }
 
 /*
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c
index 128af73..8a65f15 100644
--- a/arch/sparc/kernel/sun4m_smp.c
+++ b/arch/sparc/kernel/sun4m_smp.c
@@ -34,30 +34,19 @@ swap_ulong(volatile unsigned long *ptr, unsigned long val)
 	return val;
 }
 
-void __cpuinit smp4m_callin(void)
+void __cpuinit sun4m_cpu_pre_starting(void *arg)
 {
-	int cpuid = hard_smp_processor_id();
-
-	local_ops->cache_all();
-	local_ops->tlb_all();
-
-	notify_cpu_starting(cpuid);
-
-	register_percpu_ce(cpuid);
-
-	calibrate_delay();
-	smp_store_cpu_info(cpuid);
+}
 
-	local_ops->cache_all();
-	local_ops->tlb_all();
+void __cpuinit sun4m_cpu_pre_online(void *arg)
+{
+	int cpuid = hard_smp_processor_id();
 
-	/*
-	 * Unblock the master CPU _only_ when the scheduler state
-	 * of all secondary CPUs will be up-to-date, so after
-	 * the SMP initialization the master will be just allowed
-	 * to call the scheduler code.
+	/* Allow master to continue. The master will then give us the
+	 * go-ahead by setting the smp_commenced_mask and will wait without
+	 * timeouts until our setup is completed fully (signified by
+	 * our bit being set in the cpu_online_mask).
 	 */
-	/* Allow master to continue. */
 	swap_ulong(&cpu_callin_map[cpuid], 1);
 
 	/* XXX: What's up with all the flushes? */
@@ -75,10 +64,6 @@ void __cpuinit smp4m_callin(void)
 
 	while (!cpumask_test_cpu(cpuid, &smp_commenced_mask))
 		mb();
-
-	local_irq_enable();
-
-	set_cpu_online(cpuid, true);
 }
 
 /*
diff --git a/arch/sparc/kernel/trampoline_32.S b/arch/sparc/kernel/trampoline_32.S
index af27aca..6cdb08c 100644
--- a/arch/sparc/kernel/trampoline_32.S
+++ b/arch/sparc/kernel/trampoline_32.S
@@ -79,18 +79,15 @@ cpu3_startup:
 	 nop
 
 	/* Start this processor. */
-	call	smp4m_callin
+	call	smp_callin
 	 nop
 
-	b,a	smp_do_cpu_idle
+	b,a	smp_panic
 
 	.text
 	.align	4
 
-smp_do_cpu_idle:
-	call	cpu_idle
-	 mov	0, %o0
-
+smp_panic:
 	call	cpu_panic
 	 nop
 
@@ -144,10 +141,10 @@ sun4d_cpu_startup:
 	 nop
 
 	/* Start this processor. */
-	call	smp4d_callin
+	call	smp_callin
 	 nop
 
-	b,a	smp_do_cpu_idle
+	b,a	smp_panic
 
 	__CPUINIT
 	.align	4
@@ -201,7 +198,7 @@ leon_smp_cpu_startup:
 	 nop
 
 	/* Start this processor. */
-	call	leon_callin
+	call	smp_callin
 	 nop
 
-	b,a	smp_do_cpu_idle
+	b,a	smp_panic
-- 
1.6.0.6


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

end of thread, other threads:[~2013-02-19  5:57 UTC | newest]

Thread overview: 198+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-01  9:10 [PATCH 00/27] Generic framework for SMP booting/CPU hotplug related code Srivatsa S. Bhat
2012-06-01  9:10 ` [PATCH 01/27] smpboot: Provide a generic method to boot secondary processors Srivatsa S. Bhat
2012-06-01  9:10   ` Srivatsa S. Bhat
2012-06-01  9:10   ` Srivatsa S. Bhat
2012-06-01 12:09   ` Srivatsa S. Bhat
2012-06-03  8:51     ` Yong Zhang
2012-06-03 11:22       ` Srivatsa S. Bhat
2012-06-04  2:18         ` Yong Zhang
2012-06-03  8:53     ` Yong Zhang
2012-06-03 11:33       ` Srivatsa S. Bhat
2012-06-03 11:39         ` Russell King - ARM Linux
2012-06-03 12:05           ` Srivatsa S. Bhat
2012-06-01 16:51   ` Sam Ravnborg
2012-06-01 22:29     ` Srivatsa S. Bhat
2012-06-04 10:32       ` Thomas Gleixner
2012-06-04 13:07         ` Srivatsa S. Bhat
2012-06-04 13:18           ` Thomas Gleixner
2012-06-04 16:53             ` Srivatsa S. Bhat
2012-06-05  5:11           ` Yong Zhang
2012-06-05  6:07             ` Srivatsa S. Bhat
2012-06-01 16:53   ` Sam Ravnborg
2012-06-01 22:41     ` Srivatsa S. Bhat
2012-06-02 15:16       ` Sam Ravnborg
2012-06-02 15:34         ` Srivatsa S. Bhat
2012-06-01  9:10 ` [PATCH 02/27] smpboot: Add provisions for arch-specific locking around cpu_online_mask Srivatsa S. Bhat
2012-06-01  9:10   ` Srivatsa S. Bhat
2012-06-01  9:10   ` Srivatsa S. Bhat
2012-06-01 12:12   ` Srivatsa S. Bhat
2012-06-01  9:10 ` [PATCH 03/27] smpboot: Define and use cpu_state per-cpu variable in generic code Srivatsa S. Bhat
2012-06-01  9:10   ` Srivatsa S. Bhat
2012-06-01  9:10   ` Srivatsa S. Bhat
2012-06-01  9:10   ` Srivatsa S. Bhat
2012-06-01 12:19   ` Srivatsa S. Bhat
2012-06-01 12:25     ` Russell King - ARM Linux
2012-06-01 12:55       ` Srivatsa S. Bhat
2012-06-01 16:59   ` David Daney
2012-06-01 16:59     ` David Daney
2012-06-01 16:59     ` David Daney
2012-06-01 16:59   ` David Daney
2012-06-01  9:11 ` [PATCH 04/27] smpboot, x86, xen: Determine smp booting implementations at run-time Srivatsa S. Bhat
2012-06-01  9:11   ` Srivatsa S. Bhat
2012-06-01  9:11   ` Srivatsa S. Bhat
2012-06-01  9:11 ` [PATCH 05/27] xen, cpu hotplug: Don't call cpu_bringup() in xen_play_dead() Srivatsa S. Bhat
2012-06-01  9:11   ` Srivatsa S. Bhat
2012-06-01  9:11   ` Srivatsa S. Bhat
2012-06-01 12:59   ` [Xen-devel] " Jan Beulich
2012-06-01 12:59     ` Jan Beulich
2012-06-01 15:13     ` Srivatsa S. Bhat
2012-06-01 15:13     ` Srivatsa S. Bhat
2012-06-01 15:36       ` Jan Beulich
2012-06-01 15:36         ` Jan Beulich
2012-06-02 18:06         ` Srivatsa S. Bhat
2012-06-02 18:06           ` Srivatsa S. Bhat
2012-06-05 16:49           ` Konrad Rzeszutek Wilk
2012-06-05 16:49             ` Konrad Rzeszutek Wilk
2012-06-05 17:36             ` Srivatsa S. Bhat
2012-06-05 17:36             ` Srivatsa S. Bhat
2012-06-05 17:40           ` Thomas Gleixner
2012-06-05 17:40             ` Thomas Gleixner
2012-06-05 17:48             ` Srivatsa S. Bhat
2012-06-05 17:48               ` Srivatsa S. Bhat
2012-06-01 15:36       ` Jan Beulich
2012-06-01 12:59   ` Jan Beulich
2012-06-01  9:11 ` [PATCH 06/27] xen, smpboot: Use generic SMP booting infrastructure Srivatsa S. Bhat
2012-06-01  9:11 ` Srivatsa S. Bhat
2012-06-01  9:11   ` Srivatsa S. Bhat
2012-06-01  9:11   ` Srivatsa S. Bhat
2012-06-01  9:11 ` [PATCH 07/27] x86, " Srivatsa S. Bhat
2012-06-01  9:11   ` Srivatsa S. Bhat
2012-06-01  9:11   ` Srivatsa S. Bhat
2012-06-04 14:29   ` Thomas Gleixner
2012-06-04 14:29     ` Thomas Gleixner
2012-06-04 17:00     ` Srivatsa S. Bhat
2012-06-01  9:12 ` [PATCH 08/27] m32r: Fix horrible logic in smp_prepare_cpus() Srivatsa S. Bhat
2012-06-01  9:12   ` Srivatsa S. Bhat
2012-06-01  9:12   ` Srivatsa S. Bhat
2012-06-01  9:12 ` [PATCH 09/27] m32r, smpboot: Use generic SMP booting infrastructure Srivatsa S. Bhat
2012-06-01  9:12   ` Srivatsa S. Bhat
2012-06-01  9:12   ` Srivatsa S. Bhat
2012-06-01  9:12 ` [PATCH 10/27] mips, " Srivatsa S. Bhat
2012-06-01  9:12   ` Srivatsa S. Bhat
2012-06-01  9:12   ` Srivatsa S. Bhat
2012-06-03  8:25   ` Yong Zhang
2012-06-03 11:48     ` Srivatsa S. Bhat
2012-06-04  2:17       ` Yong Zhang
2012-06-01  9:12 ` [PATCH 11/27] sh, " Srivatsa S. Bhat
2012-06-01  9:24   ` Srivatsa S. Bhat
2012-06-01  9:12   ` Srivatsa S. Bhat
2012-06-01  9:12   ` Srivatsa S. Bhat
2012-06-01  9:12 ` [PATCH 12/27] tile, " Srivatsa S. Bhat
2012-06-01  9:12   ` Srivatsa S. Bhat
2012-06-01  9:12   ` Srivatsa S. Bhat
2012-06-01 18:07   ` Chris Metcalf
2012-06-01 18:07     ` Chris Metcalf
2012-06-01  9:13 ` [PATCH 13/27] hexagon, " Srivatsa S. Bhat
2012-06-01  9:13   ` Srivatsa S. Bhat
2012-06-01  9:13   ` Srivatsa S. Bhat
2012-06-01  9:13 ` [PATCH 14/27] ia64: Move holding of vector_lock to __setup_vector_irq() Srivatsa S. Bhat
2012-06-01  9:25   ` Srivatsa S. Bhat
2012-06-01  9:13   ` Srivatsa S. Bhat
2012-06-01  9:13   ` Srivatsa S. Bhat
2012-06-01  9:13 ` [PATCH 15/27] ia64, smpboot: Use generic SMP booting infrastructure Srivatsa S. Bhat
2012-06-01  9:25   ` Srivatsa S. Bhat
2012-06-01  9:13   ` Srivatsa S. Bhat
2012-06-01  9:13   ` Srivatsa S. Bhat
2012-06-01  9:13 ` [PATCH 16/27] mn10300: Fix horrible logic in smp_prepare_cpus() Srivatsa S. Bhat
2012-06-01  9:13   ` Srivatsa S. Bhat
2012-06-01  9:13   ` Srivatsa S. Bhat
2012-06-01  9:14 ` [PATCH 17/27] mn10300, smpboot: Use generic SMP booting infrastructure Srivatsa S. Bhat
2012-06-01  9:14   ` Srivatsa S. Bhat
2012-06-01  9:14   ` Srivatsa S. Bhat
2012-06-03  8:33   ` Yong Zhang
2012-06-03 11:50     ` Srivatsa S. Bhat
2012-06-01  9:14 ` [PATCH 18/27] powerpc, " Srivatsa S. Bhat
2012-06-01  9:14   ` Srivatsa S. Bhat
2012-06-01  9:14   ` Srivatsa S. Bhat
2012-06-01  9:14   ` Srivatsa S. Bhat
2012-06-02  6:14   ` Paul Mackerras
2012-06-02  6:14     ` Paul Mackerras
2012-06-01  9:14 ` [PATCH 19/27] blackfin, " Srivatsa S. Bhat
2012-06-01  9:14   ` Srivatsa S. Bhat
2012-06-01  9:14   ` Srivatsa S. Bhat
2012-06-01  9:14 ` [PATCH 20/27] sparc64, " Srivatsa S. Bhat
2012-06-01  9:26   ` Srivatsa S. Bhat
2012-06-01  9:14   ` Srivatsa S. Bhat
2012-06-01  9:14   ` Srivatsa S. Bhat
2012-06-01 17:55   ` David Miller
2012-06-01 17:55     ` David Miller
2012-06-01 22:44     ` [UPDATED PATCH " Srivatsa S. Bhat
2012-06-01 22:56       ` Srivatsa S. Bhat
2012-06-01 22:52       ` David Miller
2012-06-01 22:52         ` David Miller
2012-06-01  9:15 ` [PATCH 21/27] sparc32, " Srivatsa S. Bhat
2012-06-01  9:27   ` Srivatsa S. Bhat
2012-06-01  9:15   ` Srivatsa S. Bhat
2012-06-01  9:15   ` Srivatsa S. Bhat
2012-06-01 17:56   ` David Miller
2012-06-01 17:56     ` David Miller
2012-06-01 18:54     ` Sam Ravnborg
2012-06-01 18:54       ` Sam Ravnborg
2012-06-01 22:47       ` [UPDATED PATCH " Srivatsa S. Bhat
2012-06-01 22:59         ` Srivatsa S. Bhat
2012-06-01 22:53         ` David Miller
2012-06-01 22:53           ` David Miller
2012-06-01 23:17           ` Srivatsa S. Bhat
2012-06-01 23:29             ` Srivatsa S. Bhat
2012-06-02  6:52         ` Sam Ravnborg
2012-06-02  6:52           ` Sam Ravnborg
2012-06-02  7:44           ` Sam Ravnborg
2012-06-02  7:44             ` Sam Ravnborg
2012-06-02  8:01             ` Srivatsa S. Bhat
2012-06-02  8:13               ` Srivatsa S. Bhat
2012-06-02  8:14               ` Srivatsa S. Bhat
2012-06-02  8:26                 ` Srivatsa S. Bhat
2012-06-02 15:13               ` Sam Ravnborg
2012-06-02 15:13                 ` Sam Ravnborg
2012-06-02 15:58                 ` Srivatsa S. Bhat
2012-06-02 16:10                   ` Srivatsa S. Bhat
2012-06-02 16:23                   ` Sam Ravnborg
2012-06-02 16:23                     ` Sam Ravnborg
2012-06-02 16:34                     ` Srivatsa S. Bhat
2012-06-02 16:46                       ` Srivatsa S. Bhat
2012-06-03 21:17                       ` [PATCH] sparc32: refactor smp boot Sam Ravnborg
2012-06-03 21:17                         ` Sam Ravnborg
2012-06-03 21:17                         ` Sam Ravnborg
2012-06-03 21:17                         ` Sam Ravnborg
2012-06-04  1:04                         ` David Miller
2012-06-04  1:04                           ` David Miller
2012-06-04  6:48                         ` Srivatsa S. Bhat
2012-06-04  6:53                           ` Srivatsa S. Bhat
2012-06-01  9:15 ` [PATCH 22/27] um, smpboot: Use generic SMP booting infrastructure Srivatsa S. Bhat
2012-06-01  9:15   ` Srivatsa S. Bhat
2012-06-01  9:15   ` Srivatsa S. Bhat
2012-06-01  9:15   ` Srivatsa S. Bhat
2012-06-01  9:15 ` [PATCH 23/27] cris, " Srivatsa S. Bhat
2012-06-01  9:15   ` Srivatsa S. Bhat
2012-06-01  9:15   ` Srivatsa S. Bhat
2012-06-03  8:41   ` Yong Zhang
2012-06-03 11:52     ` Srivatsa S. Bhat
2012-06-01  9:15 ` [PATCH 24/27] parisc, " Srivatsa S. Bhat
2012-06-01  9:15   ` Srivatsa S. Bhat
2012-06-01  9:15   ` Srivatsa S. Bhat
2012-06-01  9:16 ` [PATCH 25/27] s390, " Srivatsa S. Bhat
2012-06-01  9:16   ` Srivatsa S. Bhat
2012-06-01  9:16   ` Srivatsa S. Bhat
2012-06-01 10:45   ` Heiko Carstens
2012-06-01  9:16 ` [PATCH 26/27] arm, " Srivatsa S. Bhat
2012-06-01  9:16   ` Srivatsa S. Bhat
2012-06-01  9:16   ` Srivatsa S. Bhat
2012-06-01  9:16   ` Srivatsa S. Bhat
2012-06-01 11:04   ` Russell King - ARM Linux
2012-06-01 11:04     ` Russell King - ARM Linux
2012-06-01  9:16 ` [PATCH 27/27] alpha, " Srivatsa S. Bhat
2012-06-01  9:16   ` Srivatsa S. Bhat
2012-06-01  9:16   ` Srivatsa S. Bhat
  -- strict thread matches above, loose matches on Subject: below --
2013-02-15 15:19 [PATCH] sparc32: refactor smp boot Sam Ravnborg
2013-02-15 19:37 ` Srivatsa S. Bhat
2013-02-19  5:57 ` David Miller

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.