Skip to content

Commit c99fff6

Browse files
diandersgregkh
authored andcommitted
kgdb: Flush console before entering kgdb on panic
[ Upstream commit dd712d3 ] When entering kdb/kgdb on a kernel panic, it was be observed that the console isn't flushed before the `kdb` prompt came up. Specifically, when using the buddy lockup detector on arm64 and running: echo HARDLOCKUP > /sys/kernel/debug/provoke-crash/DIRECT I could see: [ 26.161099] lkdtm: Performing direct entry HARDLOCKUP [ 32.499881] watchdog: Watchdog detected hard LOCKUP on cpu 6 [ 32.552865] Sending NMI from CPU 5 to CPUs 6: [ 32.557359] NMI backtrace for cpu 6 ... [backtrace for cpu 6] ... [ 32.558353] NMI backtrace for cpu 5 ... [backtrace for cpu 5] ... [ 32.867471] Sending NMI from CPU 5 to CPUs 0-4,7: [ 32.872321] NMI backtrace forP cpuANC: Hard LOCKUP Entering kdb (current=..., pid 0) on processor 5 due to Keyboard Entry [5]kdb> As you can see, backtraces for the other CPUs start printing and get interleaved with the kdb PANIC print. Let's replicate the commands to flush the console in the kdb panic entry point to avoid this. Signed-off-by: Douglas Anderson <[email protected]> Link: https://lore.kernel.org/r/20230822131945.1.I5b460ae8f954e4c4f628a373d6e74713c06dd26f@changeid Signed-off-by: Daniel Thompson <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 6d8653b commit c99fff6

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

kernel/debug/debug_core.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,6 +1006,9 @@ void kgdb_panic(const char *msg)
10061006
if (panic_timeout)
10071007
return;
10081008

1009+
debug_locks_off();
1010+
console_flush_on_panic(CONSOLE_FLUSH_PENDING);
1011+
10091012
if (dbg_kdb_mode)
10101013
kdb_printf("PANIC: %s\n", msg);
10111014

0 commit comments

Comments
 (0)