timeout < 0: reboot immediately
                        Format: <timeout>
 
+       crash_kexec_post_notifiers
+                       Run kdump after running panic-notifiers and dumping
+                       kmsg. This only for the users who doubt kdump always
+                       succeeds in any situation.
+                       Note that this also increases risks of kdump failure,
+                       because some panic notifiers can make the crashed
+                       kernel more unstable.
+
        parkbd.port=    [HW] Parallel port number the keyboard adapter is
                        connected to, default is 0.
                        Format: <parport#>
 
 static int pause_on_oops;
 static int pause_on_oops_flag;
 static DEFINE_SPINLOCK(pause_on_oops_lock);
+static bool crash_kexec_post_notifiers;
 
 int panic_timeout = CONFIG_PANIC_TIMEOUT;
 EXPORT_SYMBOL_GPL(panic_timeout);
        /*
         * If we have crashed and we have a crash kernel loaded let it handle
         * everything else.
-        * Do we want to call this before we try to display a message?
+        * If we want to run this after calling panic_notifiers, pass
+        * the "crash_kexec_post_notifiers" option to the kernel.
         */
-       crash_kexec(NULL);
+       if (!crash_kexec_post_notifiers)
+               crash_kexec(NULL);
 
        /*
         * Note smp_send_stop is the usual smp shutdown function, which
 
        kmsg_dump(KMSG_DUMP_PANIC);
 
+       /*
+        * If you doubt kdump always works fine in any situation,
+        * "crash_kexec_post_notifiers" offers you a chance to run
+        * panic_notifiers and dumping kmsg before kdump.
+        * Note: since some panic_notifiers can make crashed kernel
+        * more unstable, it can increase risks of the kdump failure too.
+        */
+       crash_kexec(NULL);
+
        bust_spinlocks(0);
 
        if (!panic_blink)
 core_param(panic, panic_timeout, int, 0644);
 core_param(pause_on_oops, pause_on_oops, int, 0644);
 
+static int __init setup_crash_kexec_post_notifiers(char *s)
+{
+       crash_kexec_post_notifiers = true;
+       return 0;
+}
+early_param("crash_kexec_post_notifiers", setup_crash_kexec_post_notifiers);
+
 static int __init oops_setup(char *s)
 {
        if (!s)