Patch "arm64: apply alternatives for !SMP kernels" has been added to the 3.19-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
arm64: apply alternatives for !SMP kernels
to the 3.19-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:
arm64-apply-alternatives-for-smp-kernels.patch
and it can be found in the queue-3.19 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
137650aad96c9594683445e41afa8ac5a2097520Mon Sep 17 00:00:00 2001
From: Mark Rutland <[email protected]>
Date: Fri, 13 Mar 2015 16:14:34 +0000
Subject: arm64: apply alternatives for !SMP kernels
From: Mark Rutland <[email protected]>
commit 137650aad96c9594683445e41afa8ac5a2097520 upstream.
Currently we only perform alternative patching for kernels built with CONFIG_SMP, as we call apply_alternatives_all() in smp.c, which is only built for CONFIG_SMP. Thus !SMP kernels may not have necessary alternatives patched in.
This patch ensures that we call apply_alternatives_all() once all CPUs are booted, even for !SMP kernels, by having the smp_init_cpus() stub call this for !SMP kernels via up_late_init. A new wrapper, do_post_cpus_up_work, is added so we can hook other calls here later (e.g. boot mode logging).
--- arch/arm64/Kconfig | 4 ++++ arch/arm64/include/asm/smp_plat.h | 2 ++ arch/arm64/kernel/setup.c | 12 ++++++++++++ arch/arm64/kernel/smp.c | 2 +- 4 files changed, 19 insertions(+), 1 deletion(-)
arch/arm64/Kconfig +4 -0
@@ -416,6 +416,10 @@ config HOTPLUG_CPU source kernel/Kconfig.preempt +config UP_LATE_INIT + def_bool y + depends on !SMP + config HZ int default 100
arch/arm64/include/asm/smp_plat.h +2 -0
@@ -40,4 +40,6 @@ static inline u32 mpidr_hash_size(void)extern u64 __cpu_logical_map[NR_CPUS ];#define cpu_logical_map (cpu) __cpu_logical_map[cpu] +void __init do_post_cpus_up_work (void ); +#endif /* __ASM_SMP_PLAT_H */
arch/arm64/kernel/setup.c +12 -0
@@ -206,6 +206,18 @@ static void __init smp_build_mpidr_hash( }#endif +void __init do_post_cpus_up_work (void ) +{ +apply_alternatives_all (); +} + +#ifdef CONFIG_UP_LATE_INIT +void __init up_late_init (void ) +{ +do_post_cpus_up_work (); +} +#endif /* CONFIG_UP_LATE_INIT */ +static void __init setup_processor (void ) {struct cpu_info *cpu_info;
arch/arm64/kernel/smp.c +1 -1
@@ -310,7 +310,7 @@ void cpu_die(void)void __init smp_cpus_done (unsigned int max_cpus) {pr_info ("SMP: Total of %d processors activated.\n" ,num_online_cpus ()); -apply_alternatives_all (); +do_post_cpus_up_work (); }void __init smp_prepare_boot_cpu (void )
Patches currently in stable-queue which might be from [email protected] are
queue-3.19/arm64-head.s-ensure-visibility-of-page-tables.patch queue-3.19/arm64-apply-alternatives-for-smp-kernels.patch queue-3.19/arm64-errata-add-workaround-for-cortex-a53-erratum-845719.patch queue-3.19/drivers-base-cacheinfo-validate-device-node-for-all-the-caches.patch queue-3.19/arm64-kvm-fix-stage-2-pgd-allocation-to-have-per-page-refcounting.patch