[PATCHv3 00/50] Add log level to show_stack()
Dmitry Safonov
dima at arista.com
Sun Apr 19 06:18:54 AEST 2020
Changes to v3:
- Collected more architectual Acks and Reviewed-by
- Fixed compilation on sparc64
Changes to v2:
- Removed excessive pr_cont("\n") (nits by Senozhatsky)
- Leave backtrace debugging messages with pr_debug()
(noted by Russell King and Will Deacon)
- Correct microblaze_unwind_inner() declaration
(Thanks to Michal Simek and kbuild test robot)
- Fix copy'n'paste typo in show_stack_loglvl() for sparc
(kbuild robot)
- Fix backtrace output on xtensa
(Thanks Max Filippov)
- Add loglevel to show_stack() on s390 (kbuild robot)
- Collected all Reviewed-by and Acked-by (thanks!)
v2: https://lore.kernel.org/linux-riscv/20200316143916.195608-1-dima@arista.com/
v1: https://lore.kernel.org/linux-riscv/20191106030542.868541-1-dima@arista.com/
Add log level argument to show_stack().
Done in three stages:
1. Introducing show_stack_loglvl() for every architecture
2. Migrating old users with an explicit log level
3. Renaming show_stack_loglvl() into show_stack()
Justification:
o It's a design mistake to move a business-logic decision
into platform realization detail.
o I have currently two patches sets that would benefit from this work:
Removing console_loglevel jumps in sysrq driver [1]
Hung task warning before panic [2] - suggested by Tetsuo (but he
probably didn't realise what it would involve).
o While doing (1), (2) the backtraces were adjusted to headers
and other messages for each situation - so there won't be a situation
when the backtrace is printed, but the headers are missing because
they have lesser log level (or the reverse).
o As the result in (2) plays with console_loglevel for kdb are removed.
The least important for upstream, but maybe still worth to note that
every company I've worked in so far had an off-list patch to print
backtrace with the needed log level (but only for the architecture they
cared about).
If you have other ideas how you will benefit from show_stack() with
a log level - please, reply to this cover letter.
See also discussion on v1:
https://lore.kernel.org/linux-riscv/20191106083538.z5nlpuf64cigxigh@pathway.suse.cz/
Cc: Andrew Morton <akpm at linux-foundation.org>
Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
Cc: Ingo Molnar <mingo at kernel.org>
Cc: Jiri Slaby <jslaby at suse.com>
Cc: Petr Mladek <pmladek at suse.com>
Cc: Sergey Senozhatsky <sergey.senozhatsky at gmail.com>
Cc: Steven Rostedt <rostedt at goodmis.org>
Cc: Tetsuo Handa <penguin-kernel at I-love.SAKURA.ne.jp>
Thanks,
Dmitry
[1]: https://lore.kernel.org/lkml/20190528002412.1625-1-dima@arista.com/T/#u
[2]: https://lkml.kernel.org/r/41fd7652-df1f-26f6-aba0-b87ebae07db6@i-love.sakura.ne.jp
Dmitry Safonov (50):
kallsyms/printk: Add loglvl to print_ip_sym()
alpha: Add show_stack_loglvl()
arc: Add show_stack_loglvl()
arm/asm: Add loglvl to c_backtrace()
arm: Add loglvl to unwind_backtrace()
arm: Add loglvl to dump_backtrace()
arm: Wire up dump_backtrace_{entry,stm}
arm: Add show_stack_loglvl()
arm64: Add loglvl to dump_backtrace()
arm64: Add show_stack_loglvl()
c6x: Add show_stack_loglvl()
csky: Add show_stack_loglvl()
h8300: Add show_stack_loglvl()
hexagon: Add show_stack_loglvl()
ia64: Pass log level as arg into ia64_do_show_stack()
ia64: Add show_stack_loglvl()
m68k: Add show_stack_loglvl()
microblaze: Add loglvl to microblaze_unwind_inner()
microblaze: Add loglvl to microblaze_unwind()
microblaze: Add show_stack_loglvl()
mips: Add show_stack_loglvl()
nds32: Add show_stack_loglvl()
nios2: Add show_stack_loglvl()
openrisc: Add show_stack_loglvl()
parisc: Add show_stack_loglvl()
powerpc: Add show_stack_loglvl()
riscv: Add show_stack_loglvl()
s390: Add show_stack_loglvl()
sh: Add loglvl to dump_mem()
sh: Remove needless printk()
sh: Add loglvl to printk_address()
sh: Add loglvl to show_trace()
sh: Add show_stack_loglvl()
sparc: Add show_stack_loglvl()
um/sysrq: Remove needless variable sp
um: Add show_stack_loglvl()
unicore32: Remove unused pmode argument in c_backtrace()
unicore32: Add loglvl to c_backtrace()
unicore32: Add show_stack_loglvl()
x86: Add missing const qualifiers for log_lvl
x86: Add show_stack_loglvl()
xtensa: Add loglvl to show_trace()
xtensa: Add show_stack_loglvl()
sysrq: Use show_stack_loglvl()
x86/amd_gart: Print stacktrace for a leak with KERN_ERR
power: Use show_stack_loglvl()
kdb: Don't play with console_loglevel
sched: Print stack trace with KERN_INFO
kernel: Use show_stack_loglvl()
kernel: Rename show_stack_loglvl() => show_stack()
arch/alpha/kernel/traps.c | 22 +++++++--------
arch/arc/include/asm/bug.h | 3 ++-
arch/arc/kernel/stacktrace.c | 17 +++++++-----
arch/arc/kernel/troubleshoot.c | 2 +-
arch/arm/include/asm/bug.h | 3 ++-
arch/arm/include/asm/traps.h | 3 ++-
arch/arm/include/asm/unwind.h | 3 ++-
arch/arm/kernel/traps.c | 39 +++++++++++++++------------
arch/arm/kernel/unwind.c | 5 ++--
arch/arm/lib/backtrace-clang.S | 9 +++++--
arch/arm/lib/backtrace.S | 14 +++++++---
arch/arm64/include/asm/stacktrace.h | 3 ++-
arch/arm64/kernel/process.c | 2 +-
arch/arm64/kernel/traps.c | 17 ++++++------
arch/c6x/kernel/traps.c | 16 ++++++-----
arch/csky/kernel/dumpstack.c | 9 ++++---
arch/csky/kernel/ptrace.c | 4 +--
arch/h8300/kernel/traps.c | 12 ++++-----
arch/hexagon/kernel/traps.c | 25 ++++++++---------
arch/ia64/include/asm/ptrace.h | 1 -
arch/ia64/kernel/mca.c | 2 +-
arch/ia64/kernel/process.c | 17 ++++++------
arch/m68k/kernel/traps.c | 13 ++++-----
arch/microblaze/include/asm/unwind.h | 3 ++-
arch/microblaze/kernel/stacktrace.c | 4 +--
arch/microblaze/kernel/traps.c | 12 ++++-----
arch/microblaze/kernel/unwind.c | 40 +++++++++++++++++-----------
arch/mips/kernel/traps.c | 35 ++++++++++++------------
arch/nds32/kernel/traps.c | 15 ++++++-----
arch/nios2/kernel/traps.c | 17 ++++++------
arch/openrisc/kernel/traps.c | 12 +++++----
arch/parisc/kernel/traps.c | 24 ++++++++---------
arch/powerpc/kernel/process.c | 15 ++++++-----
arch/powerpc/kernel/stacktrace.c | 2 +-
arch/riscv/kernel/stacktrace.c | 9 ++++---
arch/s390/kernel/dumpstack.c | 13 ++++-----
arch/sh/include/asm/kdebug.h | 6 +++--
arch/sh/include/asm/processor_32.h | 2 +-
arch/sh/kernel/dumpstack.c | 36 ++++++++++++-------------
arch/sh/kernel/process_32.c | 2 +-
arch/sh/kernel/process_64.c | 3 +--
arch/sh/kernel/traps.c | 4 +--
arch/sh/mm/fault.c | 2 +-
arch/sparc/kernel/process_32.c | 10 +++----
arch/sparc/kernel/process_64.c | 2 +-
arch/sparc/kernel/traps_64.c | 9 ++++---
arch/um/drivers/mconsole_kern.c | 2 +-
arch/um/kernel/sysrq.c | 23 ++++++++--------
arch/unicore32/kernel/setup.h | 2 +-
arch/unicore32/kernel/traps.c | 34 +++++++++++------------
arch/unicore32/lib/backtrace.S | 24 +++++++++++------
arch/x86/include/asm/stacktrace.h | 2 +-
arch/x86/kernel/amd_gart_64.c | 2 +-
arch/x86/kernel/dumpstack.c | 9 ++++---
arch/xtensa/kernel/traps.c | 22 ++++++++-------
drivers/base/power/main.c | 2 +-
drivers/tty/sysrq.c | 2 +-
include/linux/kallsyms.h | 4 +--
include/linux/sched/debug.h | 3 ++-
kernel/debug/kdb/kdb_bt.c | 15 ++++++-----
kernel/locking/lockdep.c | 4 +--
kernel/locking/rtmutex-debug.c | 2 +-
kernel/sched/core.c | 8 +++---
kernel/trace/ftrace.c | 8 +++---
lib/dump_stack.c | 2 +-
tools/include/linux/kallsyms.h | 2 +-
66 files changed, 375 insertions(+), 315 deletions(-)
--
2.26.0
More information about the Linuxppc-dev
mailing list