Message ID | d15ba145-479c-ffde-14ad-ab7170d0f06e@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Mar 28, 2018 at 05:30:55PM +0100, James Morse wrote: > -----------------%<----------------- > ACPI / APEI: don't wait to serialise with oops messages when panic()ing > > oops_begin() exists to group printk() messages with the oops message > printed by die(). To reach this caller we know that platform firmware > took this error first, then notified the OS via NMI with a 'panic' > severity. > > Don't wait for another CPU to release the die-lock before we can > panic(), our only goal is to print this fatal error and panic(). > > This code is always called in_nmi(), and since 42a0bb3f7138 ("printk/nmi: > generic solution for safe printk in NMI"), it has been safe to call > printk() from this context. Messages are batched in a per-cpu buffer > and printed via irq-work, or a call back from panic(). > > Signed-off-by: James Morse <james.morse@arm.com> > > diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c > index 22f6ea5b9ad5..f348e6540960 100644 > --- a/drivers/acpi/apei/ghes.c > +++ b/drivers/acpi/apei/ghes.c > @@ -34,7 +34,6 @@ > #include <linux/interrupt.h> > #include <linux/timer.h> > #include <linux/cper.h> > -#include <linux/kdebug.h> > #include <linux/platform_device.h> > #include <linux/mutex.h> > #include <linux/ratelimit.h> > @@ -736,9 +735,6 @@ static int _in_nmi_notify_one(struct ghes *ghes) > > sev = ghes_severity(ghes->estatus->error_severity); > if (sev >= GHES_SEV_PANIC) { > -#ifdef CONFIG_X86 > - oops_begin(); > -#endif > ghes_print_queued_estatus(); > __ghes_panic(ghes); > } > -----------------%<----------------- Acked-by: Borislav Petkov <bp@suse.de>
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index 22f6ea5b9ad5..f348e6540960 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -34,7 +34,6 @@ #include <linux/interrupt.h> #include <linux/timer.h> #include <linux/cper.h> -#include <linux/kdebug.h> #include <linux/platform_device.h> #include <linux/mutex.h> #include <linux/ratelimit.h> @@ -736,9 +735,6 @@ static int _in_nmi_notify_one(struct ghes *ghes) sev = ghes_severity(ghes->estatus->error_severity); if (sev >= GHES_SEV_PANIC) { -#ifdef CONFIG_X86 - oops_begin(); -#endif ghes_print_queued_estatus(); __ghes_panic(ghes); }