Commit b3bf6aa7 authored by Catalin Marinas's avatar Catalin Marinas

arm64: Unmask asynchronous aborts when in kernel mode

The asynchronous aborts are generally fatal for the kernel but they can
be masked via the pstate A bit. If a system error happens while in
kernel mode, it won't be visible until returning to user space. This
patch enables this kind of abort early to help identifying the cause.
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent df503ba7
...@@ -56,6 +56,9 @@ static inline void arch_local_irq_disable(void) ...@@ -56,6 +56,9 @@ static inline void arch_local_irq_disable(void)
#define local_fiq_enable() asm("msr daifclr, #1" : : : "memory") #define local_fiq_enable() asm("msr daifclr, #1" : : : "memory")
#define local_fiq_disable() asm("msr daifset, #1" : : : "memory") #define local_fiq_disable() asm("msr daifset, #1" : : : "memory")
#define local_async_enable() asm("msr daifclr, #4" : : : "memory")
#define local_async_disable() asm("msr daifset, #4" : : : "memory")
/* /*
* Save the current interrupt enable state. * Save the current interrupt enable state.
*/ */
......
...@@ -205,6 +205,11 @@ u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID }; ...@@ -205,6 +205,11 @@ u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID };
void __init setup_arch(char **cmdline_p) void __init setup_arch(char **cmdline_p)
{ {
/*
* Unmask asynchronous aborts early to catch possible system errors.
*/
local_async_enable();
setup_processor(); setup_processor();
setup_machine_fdt(__fdt_pointer); setup_machine_fdt(__fdt_pointer);
......
...@@ -160,6 +160,7 @@ asmlinkage void secondary_start_kernel(void) ...@@ -160,6 +160,7 @@ asmlinkage void secondary_start_kernel(void)
local_irq_enable(); local_irq_enable();
local_fiq_enable(); local_fiq_enable();
local_async_enable();
/* /*
* OK, it's off to the idle thread for us * OK, it's off to the idle thread for us
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment