[PATCH 00/27] Generic framework for SMP booting/CPU hotplug relatedcode
From: Srivatsa S. Bhat
Date: Fri Jun 01 2012 - 05:10:49 EST
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/