[PATCH v3 0/2] printk: CPU backtrace not printing on panic

From: takakura
Date: Mon Aug 12 2024 - 03:22:59 EST


From: Ryo Takakura <takakura@xxxxxxxxxxxxx>

Hi!

This patchset fixes 2 issues on CPU backtrace during panic. The second
issue was pointed out by John [1].

(1) CPU backtrace triggered during panic has stopped working since the
commit 779dbc2e78d7 ("printk: Avoid non-panic CPUs writing to ringbuffer")
as it disabled non-panicked cpus writing into ringbuffer after panic.

(2) The usual(non-panic context) flushing of backtraces written into
ringbuffer does not work during panic as non-panicked CPUs can't do the
flushing themselves.

Reviewed-by: John Ogness <john.ogness@xxxxxxxxxxxxx>

Sincerely,
Ryo Takakura

---

V1:
[1] https://lore.kernel.org/all/20240729114601.176047-1-takakura@xxxxxxxxxxxxx/T/

Changes since V2:
[2] https://lore.kernel.org/lkml/20240803081649.224627-1-takakura@xxxxxxxxxxxxx/T/

- Thanks Petr and John for the feedbacks!
- Add reviewed-by. Petr on (1) and John on the series.
- Fix the order of the patches based on their dependency as suggested by John.
- For (2), instead of using console_flush_on_panic() for flushing backtraces,
introduce a function which can safely do the flushing in panic while non-panic
CPU's are still online as suggested by Petr. Note that the new function calls
is_printk_legacy_deferred() which is not yet in mainline [3].
[3] https://lore.kernel.org/all/20240804005138.3722656-24-john.ogness@xxxxxxxxxxxxx/

---

Ryo Takakura (2):
(1) Allow cpu backtraces to be written into ringbuffer during panic
(2) Handle flushing of CPU backtraces during panic

include/linux/console.h | 1 +
include/linux/panic.h | 1 +
kernel/panic.c | 9 ++++++++-
kernel/printk/printk.c | 16 +++++++++++++++-
4 files changed, 25 insertions(+), 2 deletions(-)

--
2.34.1