Loading arch/powerpc/kernel/watchdog.c +6 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,12 @@ static void watchdog_smp_panic(int cpu, u64 tb) if (sysctl_hardlockup_all_cpu_backtrace) trigger_allbutself_cpu_backtrace(); /* * Force flush any remote buffers that might be stuck in IRQ context * and therefore could not run their irq_work. */ printk_trigger_flush(); if (hardlockup_panic) nmi_panic(NULL, "Hard LOCKUP"); Loading include/linux/printk.h +4 −0 Original line number Diff line number Diff line Loading @@ -198,6 +198,7 @@ void dump_stack_print_info(const char *log_lvl); void show_regs_print_info(const char *log_lvl); extern asmlinkage void dump_stack_lvl(const char *log_lvl) __cold; extern asmlinkage void dump_stack(void) __cold; void printk_trigger_flush(void); #else static inline __printf(1, 0) int vprintk(const char *s, va_list args) Loading Loading @@ -274,6 +275,9 @@ static inline void dump_stack_lvl(const char *log_lvl) static inline void dump_stack(void) { } static inline void printk_trigger_flush(void) { } #endif #ifdef CONFIG_SMP Loading kernel/printk/printk.c +5 −0 Original line number Diff line number Diff line Loading @@ -3253,6 +3253,11 @@ void defer_console_output(void) preempt_enable(); } void printk_trigger_flush(void) { defer_console_output(); } int vprintk_deferred(const char *fmt, va_list args) { int r; Loading lib/nmi_backtrace.c +6 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,12 @@ void nmi_trigger_cpumask_backtrace(const cpumask_t *mask, touch_softlockup_watchdog(); } /* * Force flush any remote buffers that might be stuck in IRQ context * and therefore could not run their irq_work. */ printk_trigger_flush(); clear_bit_unlock(0, &backtrace_flag); put_cpu(); } Loading Loading
arch/powerpc/kernel/watchdog.c +6 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,12 @@ static void watchdog_smp_panic(int cpu, u64 tb) if (sysctl_hardlockup_all_cpu_backtrace) trigger_allbutself_cpu_backtrace(); /* * Force flush any remote buffers that might be stuck in IRQ context * and therefore could not run their irq_work. */ printk_trigger_flush(); if (hardlockup_panic) nmi_panic(NULL, "Hard LOCKUP"); Loading
include/linux/printk.h +4 −0 Original line number Diff line number Diff line Loading @@ -198,6 +198,7 @@ void dump_stack_print_info(const char *log_lvl); void show_regs_print_info(const char *log_lvl); extern asmlinkage void dump_stack_lvl(const char *log_lvl) __cold; extern asmlinkage void dump_stack(void) __cold; void printk_trigger_flush(void); #else static inline __printf(1, 0) int vprintk(const char *s, va_list args) Loading Loading @@ -274,6 +275,9 @@ static inline void dump_stack_lvl(const char *log_lvl) static inline void dump_stack(void) { } static inline void printk_trigger_flush(void) { } #endif #ifdef CONFIG_SMP Loading
kernel/printk/printk.c +5 −0 Original line number Diff line number Diff line Loading @@ -3253,6 +3253,11 @@ void defer_console_output(void) preempt_enable(); } void printk_trigger_flush(void) { defer_console_output(); } int vprintk_deferred(const char *fmt, va_list args) { int r; Loading
lib/nmi_backtrace.c +6 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,12 @@ void nmi_trigger_cpumask_backtrace(const cpumask_t *mask, touch_softlockup_watchdog(); } /* * Force flush any remote buffers that might be stuck in IRQ context * and therefore could not run their irq_work. */ printk_trigger_flush(); clear_bit_unlock(0, &backtrace_flag); put_cpu(); } Loading