--- /dev/null
+From nobody Mon Sep 17 00:00:00 2001
+From: Vivek Goyal <vgoyal@in.ibm.com>
+Date: Tue, 18 Apr 2006 12:35:13 +0200
+Subject: [PATCH] x86_64: x86_64 add crashdump trigger points
+
+o Start booting into the capture kernel after an Oops if system is in a
+ unrecoverable state. System will boot into the capture kernel, if one is
+ pre-loaded by the user, and capture the kernel core dump.
+
+o One of the following conditions should be true to trigger the booting of
+ capture kernel.
+ - panic_on_oops is set.
+ - pid of current thread is 0
+ - pid of current thread is 1
+ - Oops happened inside interrupt context.
+
+Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
+Signed-off-by: Andi Kleen <ak@suse.de>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86_64/kernel/traps.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- linux-2.6.16.19.orig/arch/x86_64/kernel/traps.c
++++ linux-2.6.16.19/arch/x86_64/kernel/traps.c
+@@ -30,6 +30,7 @@
+ #include <linux/moduleparam.h>
+ #include <linux/nmi.h>
+ #include <linux/kprobes.h>
++#include <linux/kexec.h>
+
+ #include <asm/system.h>
+ #include <asm/uaccess.h>
+@@ -434,6 +435,8 @@ void __kprobes __die(const char * str, s
+ printk(KERN_ALERT "RIP ");
+ printk_address(regs->rip);
+ printk(" RSP <%016lx>\n", regs->rsp);
++ if (kexec_should_crash(current))
++ crash_kexec(regs);
+ }
+
+ void die(const char * str, struct pt_regs * regs, long err)
+@@ -456,6 +459,8 @@ void __kprobes die_nmi(char *str, struct
+ */
+ printk(str, safe_smp_processor_id());
+ show_registers(regs);
++ if (kexec_should_crash(current))
++ crash_kexec(regs);
+ if (panic_on_timeout || panic_on_oops)
+ panic("nmi watchdog");
+ printk("console shuts up ...\n");