Skip to contentSkip to conversation

Patch "arm64: apply alternatives for !SMP kernels" has been added to the 3.19-stable tree

PATCH [email protected] 1 participant 1 message May 2, 2015

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

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 137650aad96c9594683445e41afa8ac5a2097520 Mon 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).

Cc Andre Przywara <[email protected]>
Cc Catalin Marinas <[email protected]>
Fixes e039ee4ee3fcf174 ("arm64: add alternative runtime patching")
---
 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