[PATCH 00/50] Add log level to show_stack()
Dmitry Safonov
dima at arista.com
Wed Nov 6 14:04:51 AEDT 2019
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.
Ok, to the scary part: I've tested it on x86_64 and build tested on a
couple of architectures. Though, I can't cover all platforms so
I hope I'll have a couple of reports and than it'll soak in linux-next
for some time. In my opinion the variety of architectures shouldn't
stop general improvements.
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 | 40 ++++++++++++++++------------
arch/arm/kernel/unwind.c | 7 ++---
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 | 19 ++++++-------
arch/c6x/kernel/traps.c | 18 +++++++------
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 | 37 ++++++++++++++-----------
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 | 11 ++++----
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/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 | 26 ++++++++++--------
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 | 11 +++-----
kernel/locking/lockdep.c | 4 +--
kernel/locking/rtmutex-debug.c | 2 +-
kernel/sched/core.c | 6 ++---
kernel/trace/ftrace.c | 8 +++---
lib/dump_stack.c | 2 +-
64 files changed, 368 insertions(+), 311 deletions(-)
--
2.23.0
More information about the Linuxppc-dev
mailing list