Commit bf6d0d1e authored by Petr Mladek's avatar Petr Mladek
Browse files

Merge branch 'rework/printk_safe-removal' into for-linus

parents a0ddee65 5d5e4522
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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");

+4 −0
Original line number Diff line number Diff line
@@ -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)
@@ -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
+5 −0
Original line number Diff line number Diff line
@@ -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;
+6 −0
Original line number Diff line number Diff line
@@ -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();
}