Re: [PATCH 1/8] ARM: SCU: Add common routines for secondary CPU bootup

Russell King - ARM Linux
2010-12-04T08:49:05Z

On Thu, Dec 02, 2010 at 06:01:50PM +0000, Russell King - ARM Linux wrote:
> On Thu, Dec 02, 2010 at 05:38:24PM +0000, Russell King - ARM Linux wrote:
> > What if a platform, for what ever reason, wants to have 3 CPUs,
> > numbered 0, 2, 3 ? That's the reason why the code which sets the
> > possible and present maps isn't in the ARM core code - Eg, we don't
> > know if a platform wants to keep CPU 1 in AMP mode to run some
> > special software on it.
> >
> > I don't think it's worth it because I think trying to considate this
> > is going to cripple the code structure in the future.
>
> I don't think this is particularly worth it either:

As Catalin has pointed out:

http://lists.arm.linux.org.uk/lurker/message/20101202.162840.5465758c.en.html

The SCU is part of the core, and if you consult the TRMs for the MPCore
devices, it is actually different in ARM11 MPCore vs Cortex-A9 MPCore.
Cortex-A15 doesn't have a MMIO addressable SCU at all.

So, this is about as far as I want to go with stripping out the common
code from the various platforms (this includes my previous SMP series):

http://lists.arm.linux.org.uk/lurker/message/20101203.200746.31424430.en.html

This results in a net reduction of 242 LOC, as shown in the following
diffstat:

arch/arm/include/asm/hardirq.h | 18 ++
arch/arm/include/asm/mach/irq.h | 2 +-
arch/arm/include/asm/smp.h | 17 +-
arch/arm/include/asm/smp_mpidr.h | 17 --
arch/arm/kernel/entry-armv.S | 2 +-
arch/arm/kernel/fiq.c | 5 +-
arch/arm/kernel/head.S | 39 +++--
arch/arm/kernel/irq.c | 23 ++-
arch/arm/kernel/smp.c | 243 ++++++++++++++++-------------
arch/arm/mach-msm/include/mach/smp.h | 4 +-
arch/arm/mach-omap2/omap-hotplug.c | 14 +--
arch/arm/mach-omap2/omap-smp.c | 66 ++------
arch/arm/mach-realview/hotplug.c | 18 +--
arch/arm/mach-realview/include/mach/smp.h | 5 +-
arch/arm/mach-realview/platsmp.c | 95 +++---------
arch/arm/mach-s5pv310/hotplug.c | 18 +--
arch/arm/mach-s5pv310/include/mach/smp.h | 5 +-
arch/arm/mach-s5pv310/platsmp.c | 46 +-----
arch/arm/mach-tegra/hotplug.c | 18 +--
arch/arm/mach-tegra/include/mach/smp.h | 12 +--
arch/arm/mach-tegra/platsmp.c | 33 +---
arch/arm/mach-ux500/hotplug.c | 18 +--
arch/arm/mach-ux500/include/mach/smp.h | 5 +-
arch/arm/mach-ux500/platsmp.c | 57 ++-----
arch/arm/mach-vexpress/include/mach/smp.h | 5 +-
arch/arm/mach-vexpress/platsmp.c | 54 ++-----
arch/arm/plat-omap/include/plat/smp.h | 5 +-
27 files changed, 301 insertions(+), 543 deletions(-)

Can someone also explain why OMAP uses different file naming from everyone
else? It's annoying as (eg) arch/arm/*/platsmp.c for editing the platform
SMP support files gets everyone except OMAP.