ARM: 8739/1: NOMMU: Setup VBAR/Hivecs for secondaries cores
authorVladimir Murzin <vladimir.murzin@arm.com>
Wed, 27 Dec 2017 09:38:55 +0000 (10:38 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Sun, 21 Jan 2018 15:32:23 +0000 (15:32 +0000)
With switch to dynamic exception base address setting, VBAR/Hivecs
set only for boot CPU, but secondaries stay unaware of that. That
might lead to weird effects when trying up to bring up secondaries.

Fixes: ad475117d201 ("ARM: 8649/2: nommu: remove Hivecs configuration is asm")
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
Acked-by: afzal mohammed <afzal.mohd.ma@gmail.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
arch/arm/include/asm/memory.h
arch/arm/kernel/smp.c
arch/arm/mm/nommu.c

index 1f54e4e98c1e10cd77fd23a465268946c33d15c8..4966677036937cf3417fc9eb6477f00710804b47 100644 (file)
@@ -88,6 +88,7 @@
 #else /* CONFIG_MMU */
 
 #ifndef __ASSEMBLY__
+extern unsigned long setup_vectors_base(void);
 extern unsigned long vectors_base;
 #define VECTORS_BASE           vectors_base
 #endif
index b4fbf00ee4ad527d256c20f055540ae74b8c2b9f..2da087926ebe1b5e14bd3aa516a34292d38ec951 100644 (file)
@@ -379,6 +379,9 @@ asmlinkage void secondary_start_kernel(void)
 
        cpu_init();
 
+#ifndef CONFIG_MMU
+       setup_vectors_base();
+#endif
        pr_debug("CPU%u: Booted secondary processor\n", cpu);
 
        preempt_disable();
index e4370810f4f13f9a5a3bb7b7712babb9f3725fe8..7c087961b7ce5fc5e5b7e795d3a7302d43c0c71f 100644 (file)
@@ -31,7 +31,7 @@ struct mpu_rgn_info mpu_rgn_info;
 
 #ifdef CONFIG_CPU_CP15
 #ifdef CONFIG_CPU_HIGH_VECTOR
-static unsigned long __init setup_vectors_base(void)
+unsigned long setup_vectors_base(void)
 {
        unsigned long reg = get_cr();
 
@@ -57,7 +57,7 @@ static inline bool security_extensions_enabled(void)
        return 0;
 }
 
-static unsigned long __init setup_vectors_base(void)
+unsigned long setup_vectors_base(void)
 {
        unsigned long base = 0, reg = get_cr();