Skip to contentSkip to conversation

setup: Move unmask of async interrupts after possible earlycon setup

PATCH New Jon Masters 2 participants 6 messages Aug 26, 2014 arm64

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 setup: Move unmask of async interrupts after possible earlycon setup

The kernel wants to enable reporting of asynchronous interrupts (i.e. System Errors) as early as possible. But if this happens too early then a pending System Error on initial entry into the kernel will never be reported where a user can see it (instead it will remain in the kernel ring buffer and be visible only via hardware debug). Therefore, move the enabling of asynchronous interrupts to after parsing any possible earlycon parameters setting up earlycon.

---
 arch/arm64/kernel/setup.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
arch/arm64/kernel/setup.c +6 -5
index f6f0ccf..f849b88 100644
@@ -362,11 +362,6 @@ u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID };
 
 void __init setup_arch(char **cmdline_p)
 {
-	/*
-	 * Unmask asynchronous aborts early to catch possible system errors.
-	 */
-	local_async_enable();
-
 	setup_processor();
 
 	setup_machine_fdt(__fdt_pointer);
@@ -382,6 +377,12 @@ void __init setup_arch(char **cmdline_p)
 
 	parse_early_param();
 
+	/*
+	 *  Unmask asynchronous aborts after bringing up possible earlycon.
+	 * (Report possible System Errors once we can report this occurred)
+	 */
+	local_async_enable();
+
 	efi_init();
 	arm64_memblock_init();
 
Signature · 1 line
1.8.3.1
#1 lore raw

PATCH 1/1 setup: Move unmask of async interrupts after possible earlycon setup

Quoted 9 lines · Jon Masters

The kernel wants to enable reporting of asynchronous interrupts (i.e. System Errors) as early as possible. But if this happens too early then a pending System Error on initial entry into the kernel will never be reported where a user can see it (instead it will remain in the kernel ring buffer and be visible only via hardware debug). Therefore, move the enabling of asynchronous interrupts to after parsing any possible earlycon parameters setting up earlycon.

That sounds wrong. Why aren't early log messages getting flushed out when the console shows up?

g.

Quoted 41 lines
---
 arch/arm64/kernel/setup.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
arch/arm64/kernel/setup.c +6 -6
index f6f0ccf..f849b88 100644
@@ -362,11 +362,6 @@ u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID };
 
 void __init setup_arch(char **cmdline_p)
 {
-       /*
-        * Unmask asynchronous aborts early to catch possible system errors.
-        */
-       local_async_enable();
-
        setup_processor();
 
        setup_machine_fdt(__fdt_pointer);
@@ -382,6 +377,12 @@ void __init setup_arch(char **cmdline_p)
 
        parse_early_param();
 
+       /*
+        *  Unmask asynchronous aborts after bringing up possible earlycon.
+        * (Report possible System Errors once we can report this occurred)
+        */
+       local_async_enable();
+
        efi_init();
        arm64_memblock_init();
 
--

1.8.3.1

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

#2 lore raw

PATCH 1/1 setup: Move unmask of async interrupts after possible earlycon setup

Hi Grant,

Quoted 9 lines · Grant Likely
Quoted 8 lines · Jon Masters

The kernel wants to enable reporting of asynchronous interrupts (i.e. System Errors) as early as possible. But if this happens too early then a pending System Error on initial entry into the kernel will never be reported where a user can see it (instead it will remain in the kernel ring buffer and be visible only via hardware debug). Therefore, move the enabling of asynchronous interrupts to after parsing any possible earlycon parameters setting up earlycon.

Quoted 4 lines
Quoted 1 line

That sounds wrong. Why aren't early log messages getting flushed out when the console shows up?

The problem is that when such an error occurs, we immediately panic. And we've not setup the earlycon yet so there's no way to ever see it. I wasted a bunch of time last week so it's worth saving someone else.

Jon.

#3 lore raw

PATCH 1/1 setup: Move unmask of async interrupts after possible earlycon setup

Quoted 12 lines · Jon Masters

Hi Grant,

Quoted 9 lines · Grant Likely
Quoted 8 lines · Jon Masters

The kernel wants to enable reporting of asynchronous interrupts (i.e. System Errors) as early as possible. But if this happens too early then a pending System Error on initial entry into the kernel will never be reported where a user can see it (instead it will remain in the kernel ring buffer and be visible only via hardware debug). Therefore, move the enabling of asynchronous interrupts to after parsing any possible earlycon parameters setting up earlycon.

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

That sounds wrong. Why aren't early log messages getting flushed out when the console shows up?

The problem is that when such an error occurs, we immediately panic. And we've not setup the earlycon yet so there's no way to ever see it. I wasted a bunch of time last week so it's worth saving someone else.

Reasonable reason. Perhaps put that in the patch description.

g.

#4 lore raw

PATCH 1/1 setup: Move unmask of async interrupts after possible earlycon setup

Quoted 15 lines · Grant Likely
Quoted 14 lines · Jon Masters

Hi Grant,

Quoted 11 lines · Grant Likely
Quoted 9 lines · Jon Masters

The kernel wants to enable reporting of asynchronous interrupts (i.e. System Errors) as early as possible. But if this happens too early then a pending System Error on initial entry into the kernel will never be reported where a user can see it (instead it will remain in the kernel ring buffer and be visible only via hardware debug). Therefore, move the enabling of asynchronous interrupts to after parsing any possible earlycon parameters setting up earlycon.

Quoted 8 lines
Quoted 6 lines
Quoted 2 lines

That sounds wrong. Why aren't early log messages getting flushed out when the console shows up?

The problem is that when such an error occurs, we immediately panic. And we've not setup the earlycon yet so there's no way to ever see it. I wasted a bunch of time last week so it's worth saving someone else.

Reasonable reason. Perhaps put that in the patch description.

Sent a V2 with that fixed. Forgot to copy you, apologies.

Jon.

#5 lore raw

PATCH 1/1 setup: Move unmask of async interrupts after possible earlycon setup

In reply to Jon Masters
Quoted 12 lines · Jon Masters

Hi Grant,

Quoted 9 lines · Grant Likely
Quoted 8 lines · Jon Masters

The kernel wants to enable reporting of asynchronous interrupts (i.e. System Errors) as early as possible. But if this happens too early then a pending System Error on initial entry into the kernel will never be reported where a user can see it (instead it will remain in the kernel ring buffer and be visible only via hardware debug). Therefore, move the enabling of asynchronous interrupts to after parsing any possible earlycon parameters setting up earlycon.

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

That sounds wrong. Why aren't early log messages getting flushed out when the console shows up?

The problem is that when such an error occurs, we immediately panic. And we've not setup the earlycon yet so there's no way to ever see it. I wasted a bunch of time last week so it's worth saving someone else.

Admittedly this is more likely to be an issue for Enterprise vendor kernels, where the default config (should be always) is PANIC_ON_OOPS.

Jon.