Patch "ARM: ux500: simplify secondary CPU boot" has been added to the 4.2-stable tree
This is a note to let you know that I've just added the patch titled
ARM: ux500: simplify secondary CPU boot
to the 4.2-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
arm-ux500-simplify-secondary-cpu-boot.patch
and it can be found in the queue-4.2 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
c00def71efd919e8ae835a25f4f4c80a4b2d36d3Mon Sep 17 00:00:00 2001
From: Linus Walleij <[email protected]>
Date: Mon, 3 Aug 2015 09:26:52 +0200
Subject: ARM: ux500: simplify secondary CPU boot
From: Linus Walleij <[email protected]>
commit c00def71efd919e8ae835a25f4f4c80a4b2d36d3 upstream.
This removes a lot of ancient cruft from the Ux500 SMP boot. Instead of the pen grab/release, just point the ROM to secondary_boot() and start the second CPU there, then send the IPI.
Use our own SMP enable method. This enables us to remove the last static mapping and get both CPUs booting properly.
Tested this and it just works.
--- arch/arm/mach-ux500/Makefile | 2 arch/arm/mach-ux500/cpu-db8500.c | 1 arch/arm/mach-ux500/headsmp.S | 37 ---------- arch/arm/mach-ux500/platsmp.c | 132 +++++++++++---------------------------- arch/arm/mach-ux500/setup.h | 1 5 files changed, 40 insertions(+), 133 deletions(-)
arch/arm/mach-ux500/Makefile +1 -1
@@ -7,7 +7,7 @@ obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o obj-$(CONFIG_MACH_MOP500) += board-mop500-regulators.o \ board-mop500-audio.o -obj-$(CONFIG_SMP) += platsmp.o headsmp.o +obj-$(CONFIG_SMP) += platsmp.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o
arch/arm/mach-ux500/cpu-db8500.c +0 -1
@@ -154,7 +154,6 @@ static const char * stericsson_dt_platfo };DT_MACHINE_START (U8500_DT ,"ST-Ericsson Ux5x0 platform (Device Tree Support)" ) - .smp = smp_ops(ux500_smp_ops), .map_io = u8500_map_io, .init_irq = ux500_init_irq,/* we re-use nomadik timer here */
arch/arm/mach-ux500/headsmp.S deleted +0 -37
@@ -1,37 +0,0 @@ -/* - * Copyright (c) 2009 ST-Ericsson - * This file is based ARM Realview platform - * Copyright (c) 2003 ARM Limited - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/linkage.h> -#include <linux/init.h> - -/* - * U8500 specific entry point for secondary CPUs. - */ -ENTRY(u8500_secondary_startup) - mrc p15, 0, r0, c0, c0, 5 - and r0, r0, #15 - adr r4, 1f - ldmia r4, {r5, r6} - sub r4, r4, r5 - add r6, r6, r4 -pen: ldr r7, [r6] - cmp r7, r0 - bne pen - - /* - * we've been released from the holding pen: secondary_stack - * should now contain the SVC stack for this core - */ - b secondary_startup -ENDPROC(u8500_secondary_startup) - - .align 2 -1: .long . - .long pen_release
arch/arm/mach-ux500/platsmp.c +39 -93
174 lines not on this page · raw message
arch/arm/mach-ux500/setup.h +0 -1
@@ -26,7 +26,6 @@ extern struct device *ux500_soc_device_iextern void ux500_timer_init (void ); -extern struct smp_operations ux500_smp_ops;extern void ux500_cpu_die (unsigned int cpu);#endif /* __ASM_ARCH_SETUP_H */
Patches currently in stable-queue which might be from [email protected] are
queue-4.2/arm-ux500-simplify-secondary-cpu-boot.patch