mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-03-19 13:34:07 +00:00
printk fixup for 5.16
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESH4wyp42V4tXvYsjUqAMR0iAlPIFAmGWF6YACgkQUqAMR0iA lPJJ+RAAm9pi/EElKKl+lOlBl+ehJlKuNLnPQWFmmaRc9xd0ruUipp1nsaktLJ8f R/PkSwR/YWpBWlF8P4o+x9sOFyTNyLasoHtqsinEcAJI4lb7d1KOrPliTXyr15Ai A303djwJmwCw5KxAPOjkG/nMBlpMIAQRee9GDWs1ykfSlIsI4jp7isVbCFNCQNVF auHYq1bfJ5MJYPjxIDZUt+NF7kg7dD4k4g+VCVjaH1u8pGeaCUCtnNjMFOk1XfU8 yFQnaDcrAu4zJPq3d74z4eN9Bk+su8+DhnfrAEFjuFxGTgYc2MyRt0gGFeiUtNs4 rvST/eHBO4zeuL18S8G+fLcig/9ZYE73xzjdOCzRzLDjn0VQr9t06ez1QqJOb4D6 A4SSufwek5NIqYKMlhV/az2EceQYK8Wv3KAz8w98KDfwvVVhUSgE23MbTCO0hvQU PWF35d3hQ+9oH0ZGYRumb8OpXtKJ+2KmzyN8Z0xhivHFBIKlcW6IBGhWRANclJO8 jNAM3jiwi8fRDVM2wI1fmgeEmMhG+WuTI3dJVu3tu4vI923FW5GdY6ev5EvH0Ts0 khTwIjtmCHUJGSeWajy3Gi9irdyhPyPNRMqgal4GS+gGpVU2mMMKTG+NzxxtCRKR BUgfCjFDoDJWrNWIzzOwNqgF0Y+V9GgCZOkb73u/y+xVx0Rmc6U= =wbBy -----END PGP SIGNATURE----- Merge tag 'printk-for-5.16-fixup' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux Pull printk fixes from Petr Mladek: - Try to flush backtraces from other CPUs also on the local one. This was a regression caused by printk_safe buffers removal. - Remove header dependency warning. * tag 'printk-for-5.16-fixup' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux: printk: Remove printk.h inclusion in percpu.h printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces
This commit is contained in:
commit
7d5775d49e
5 changed files with 21 additions and 1 deletions
|
@ -187,6 +187,12 @@ static void watchdog_smp_panic(int cpu, u64 tb)
|
||||||
if (sysctl_hardlockup_all_cpu_backtrace)
|
if (sysctl_hardlockup_all_cpu_backtrace)
|
||||||
trigger_allbutself_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)
|
if (hardlockup_panic)
|
||||||
nmi_panic(NULL, "Hard LOCKUP");
|
nmi_panic(NULL, "Hard LOCKUP");
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
#include <linux/preempt.h>
|
#include <linux/preempt.h>
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <linux/cpumask.h>
|
#include <linux/cpumask.h>
|
||||||
#include <linux/printk.h>
|
|
||||||
#include <linux/pfn.h>
|
#include <linux/pfn.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
|
||||||
|
|
|
@ -198,6 +198,7 @@ void dump_stack_print_info(const char *log_lvl);
|
||||||
void show_regs_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_lvl(const char *log_lvl) __cold;
|
||||||
extern asmlinkage void dump_stack(void) __cold;
|
extern asmlinkage void dump_stack(void) __cold;
|
||||||
|
void printk_trigger_flush(void);
|
||||||
#else
|
#else
|
||||||
static inline __printf(1, 0)
|
static inline __printf(1, 0)
|
||||||
int vprintk(const char *s, va_list args)
|
int vprintk(const char *s, va_list args)
|
||||||
|
@ -274,6 +275,9 @@ static inline void dump_stack_lvl(const char *log_lvl)
|
||||||
static inline void dump_stack(void)
|
static inline void dump_stack(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
static inline void printk_trigger_flush(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
|
|
|
@ -3253,6 +3253,11 @@ void defer_console_output(void)
|
||||||
preempt_enable();
|
preempt_enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void printk_trigger_flush(void)
|
||||||
|
{
|
||||||
|
defer_console_output();
|
||||||
|
}
|
||||||
|
|
||||||
int vprintk_deferred(const char *fmt, va_list args)
|
int vprintk_deferred(const char *fmt, va_list args)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
|
|
@ -75,6 +75,12 @@ void nmi_trigger_cpumask_backtrace(const cpumask_t *mask,
|
||||||
touch_softlockup_watchdog();
|
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);
|
clear_bit_unlock(0, &backtrace_flag);
|
||||||
put_cpu();
|
put_cpu();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue