ARM: 8739/1: NOMMU: Setup VBAR/Hivecs for secondaries cores

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: ad475117d2 ("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>
This commit is contained in:
Vladimir Murzin 2017-12-27 10:38:55 +01:00 committed by Russell King
parent c7780ab56c
commit 62d1c95d57
3 changed files with 6 additions and 2 deletions

View File

@ -88,6 +88,7 @@
#else /* CONFIG_MMU */ #else /* CONFIG_MMU */
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
extern unsigned long setup_vectors_base(void);
extern unsigned long vectors_base; extern unsigned long vectors_base;
#define VECTORS_BASE vectors_base #define VECTORS_BASE vectors_base
#endif #endif

View File

@ -379,6 +379,9 @@ asmlinkage void secondary_start_kernel(void)
cpu_init(); cpu_init();
#ifndef CONFIG_MMU
setup_vectors_base();
#endif
pr_debug("CPU%u: Booted secondary processor\n", cpu); pr_debug("CPU%u: Booted secondary processor\n", cpu);
preempt_disable(); preempt_disable();

View File

@ -31,7 +31,7 @@ struct mpu_rgn_info mpu_rgn_info;
#ifdef CONFIG_CPU_CP15 #ifdef CONFIG_CPU_CP15
#ifdef CONFIG_CPU_HIGH_VECTOR #ifdef CONFIG_CPU_HIGH_VECTOR
static unsigned long __init setup_vectors_base(void) unsigned long setup_vectors_base(void)
{ {
unsigned long reg = get_cr(); unsigned long reg = get_cr();
@ -57,7 +57,7 @@ static inline bool security_extensions_enabled(void)
return 0; return 0;
} }
static unsigned long __init setup_vectors_base(void) unsigned long setup_vectors_base(void)
{ {
unsigned long base = 0, reg = get_cr(); unsigned long base = 0, reg = get_cr();