ARM: dts: rockchip: Use GPU as cooling device for the GPU thermal zone of the rk3288
[linux-2.6-microblaze.git] / kernel / panic.c
index c1fcaad..b4543a3 100644 (file)
@@ -51,6 +51,7 @@ EXPORT_SYMBOL_GPL(panic_timeout);
 #define PANIC_PRINT_TIMER_INFO         0x00000004
 #define PANIC_PRINT_LOCK_INFO          0x00000008
 #define PANIC_PRINT_FTRACE_INFO                0x00000010
+#define PANIC_PRINT_ALL_PRINTK_MSG     0x00000020
 unsigned long panic_print;
 
 ATOMIC_NOTIFIER_HEAD(panic_notifier_list);
@@ -134,6 +135,9 @@ EXPORT_SYMBOL(nmi_panic);
 
 static void panic_print_sys_info(void)
 {
+       if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
+               console_flush_on_panic(CONSOLE_REPLAY_ALL);
+
        if (panic_print & PANIC_PRINT_TASK_INFO)
                show_state();
 
@@ -277,7 +281,7 @@ void panic(const char *fmt, ...)
         * panic() is not being callled from OOPS.
         */
        debug_locks_off();
-       console_flush_on_panic();
+       console_flush_on_panic(CONSOLE_FLUSH_PENDING);
 
        panic_print_sys_info();
 
@@ -306,6 +310,8 @@ void panic(const char *fmt, ...)
                 * shutting down.  But if there is a chance of
                 * rebooting the system it will be rebooted.
                 */
+               if (panic_reboot_mode != REBOOT_UNDEFINED)
+                       reboot_mode = panic_reboot_mode;
                emergency_restart();
        }
 #ifdef __sparc__
@@ -321,6 +327,9 @@ void panic(const char *fmt, ...)
        disabled_wait();
 #endif
        pr_emerg("---[ end Kernel panic - not syncing: %s ]---\n", buf);
+
+       /* Do not scroll important messages printed above */
+       suppress_printk = 1;
        local_irq_enable();
        for (i = 0; ; i += PANIC_TIMER_STEP) {
                touch_softlockup_watchdog();