diff options
| -rw-r--r-- | arch/arm64/include/asm/irqflags.h | 3 | ||||
| -rw-r--r-- | arch/arm64/kernel/setup.c | 5 | ||||
| -rw-r--r-- | arch/arm64/kernel/smp.c | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/irqflags.h b/arch/arm64/include/asm/irqflags.h index aa11943b8502..b2fcfbc51ecc 100644 --- a/arch/arm64/include/asm/irqflags.h +++ b/arch/arm64/include/asm/irqflags.h | |||
| @@ -56,6 +56,9 @@ static inline void arch_local_irq_disable(void) | |||
| 56 | #define local_fiq_enable() asm("msr daifclr, #1" : : : "memory") | 56 | #define local_fiq_enable() asm("msr daifclr, #1" : : : "memory") |
| 57 | #define local_fiq_disable() asm("msr daifset, #1" : : : "memory") | 57 | #define local_fiq_disable() asm("msr daifset, #1" : : : "memory") |
| 58 | 58 | ||
| 59 | #define local_async_enable() asm("msr daifclr, #4" : : : "memory") | ||
| 60 | #define local_async_disable() asm("msr daifset, #4" : : : "memory") | ||
| 61 | |||
| 59 | /* | 62 | /* |
| 60 | * Save the current interrupt enable state. | 63 | * Save the current interrupt enable state. |
| 61 | */ | 64 | */ |
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 0bc5e4cbc017..bd9bbd0e44ed 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c | |||
| @@ -205,6 +205,11 @@ u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID }; | |||
| 205 | 205 | ||
| 206 | void __init setup_arch(char **cmdline_p) | 206 | void __init setup_arch(char **cmdline_p) |
| 207 | { | 207 | { |
| 208 | /* | ||
| 209 | * Unmask asynchronous aborts early to catch possible system errors. | ||
| 210 | */ | ||
| 211 | local_async_enable(); | ||
| 212 | |||
| 208 | setup_processor(); | 213 | setup_processor(); |
| 209 | 214 | ||
| 210 | setup_machine_fdt(__fdt_pointer); | 215 | setup_machine_fdt(__fdt_pointer); |
diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index a5aeefab03c3..a0c2ca602cf8 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c | |||
| @@ -160,6 +160,7 @@ asmlinkage void secondary_start_kernel(void) | |||
| 160 | 160 | ||
| 161 | local_irq_enable(); | 161 | local_irq_enable(); |
| 162 | local_fiq_enable(); | 162 | local_fiq_enable(); |
| 163 | local_async_enable(); | ||
| 163 | 164 | ||
| 164 | /* | 165 | /* |
| 165 | * OK, it's off to the idle thread for us | 166 | * OK, it's off to the idle thread for us |
