kexec: allow kdump with crash_kexec_post_notifiers
authorPetr Tesarik <[email protected]>
Tue, 2 Aug 2016 21:06:19 +0000 (14:06 -0700)
committerLinus Torvalds <[email protected]>
Tue, 2 Aug 2016 23:35:30 +0000 (19:35 -0400)
If a crash kernel is loaded, do not crash the running domain.  This is
needed if the kernel is loaded with crash_kexec_post_notifiers, because
panic notifiers are run before __crash_kexec() in that case, and this
Xen hook prevents its being called later.

[[email protected]: build fix: unconditionally include kexec.h]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Petr Tesarik <[email protected]>
Cc: Juergen Gross <[email protected]>
Cc: Josh Triplett <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Eric Biederman <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Boris Ostrovsky <[email protected]>
Cc: "Paul E. McKenney" <[email protected]>
Cc: Dave Young <[email protected]>
Cc: David Vrabel <[email protected]>
Cc: Vivek Goyal <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
arch/x86/xen/enlighten.c

index cd993051aed72a8e702280be2d6064397bf48c79..8ffb089b19a5690596637d4eb9d0d8026eb88255 100644 (file)
@@ -34,9 +34,7 @@
 #include <linux/edd.h>
 #include <linux/frame.h>
 
-#ifdef CONFIG_KEXEC_CORE
 #include <linux/kexec.h>
-#endif
 
 #include <xen/xen.h>
 #include <xen/events.h>
@@ -1334,7 +1332,8 @@ static void xen_crash_shutdown(struct pt_regs *regs)
 static int
 xen_panic_event(struct notifier_block *this, unsigned long event, void *ptr)
 {
-       xen_reboot(SHUTDOWN_crash);
+       if (!kexec_crash_loaded())
+               xen_reboot(SHUTDOWN_crash);
        return NOTIFY_DONE;
 }