[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210715193359.25946-1-john.ogness@linutronix.de>
Date: Thu, 15 Jul 2021 21:39:53 +0206
From: John Ogness <john.ogness@...utronix.de>
To: Petr Mladek <pmladek@...e.com>
Cc: Sergey Senozhatsky <senozhatsky@...omium.org>,
Steven Rostedt <rostedt@...dmis.org>,
Thomas Gleixner <tglx@...utronix.de>,
linux-kernel@...r.kernel.org,
"Paul E. McKenney" <paulmck@...nel.org>,
Michael Ellerman <mpe@...erman.id.au>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
Paul Mackerras <paulus@...ba.org>,
Eric Biederman <ebiederm@...ssion.com>,
Nicholas Piggin <npiggin@...il.com>,
Christophe Leroy <christophe.leroy@...roup.eu>,
Cédric Le Goater <clg@...d.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Kees Cook <keescook@...omium.org>,
Tiezhu Yang <yangtiezhu@...ngson.cn>,
Alexey Kardashevskiy <aik@...abs.ru>,
Yue Hu <huyue2@...ong.com>, linuxppc-dev@...ts.ozlabs.org,
kexec@...ts.infradead.org, Russell King <linux@...linux.org.uk>,
Ingo Molnar <mingo@...hat.com>, Marc Zyngier <maz@...nel.org>,
Valentin Schneider <valentin.schneider@....com>,
Geert Uytterhoeven <geert@...ux-m68k.org>,
Mike Rapoport <rppt@...nel.org>,
"Wolfram Sang (Renesas)" <wsa+renesas@...g-engineering.com>,
Anshuman Khandual <anshuman.khandual@....com>,
Xiongwei Song <sxwjean@...il.com>,
Frederic Weisbecker <frederic@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
Masahiro Yamada <masahiroy@...nel.org>,
Nathan Chancellor <nathan@...nel.org>,
Nick Desaulniers <ndesaulniers@...gle.com>,
Nick Terrell <terrelln@...com>,
Vipin Sharma <vipinsh@...gle.com>,
Rasmus Villemoes <linux@...musvillemoes.dk>,
Daniel Borkmann <daniel@...earbox.net>,
Vlastimil Babka <vbabka@...e.cz>,
linux-arm-kernel@...ts.infradead.org
Subject: [PATCH printk v4 0/6] printk: remove safe buffers
Hi,
Here is v4 of a series to remove the safe buffers. v3 can be
found here [0]. The safe buffers are no longer needed because
messages can be stored directly into the log buffer from any
context.
However, the safe buffers also provided a form of recursion
protection. For that reason, explicit recursion protection is
implemented for this series.
The safe buffers also implicitly provided serialization
between multiple CPUs executing in NMI context. This was
particularly necessary for the nmi_backtrace() output. This
serializiation is now preserved by using the printk cpulock.
With the removal of the safe buffers, there is no need for
extra NMI enter/exit tracking. So this is also removed
(which includes removing the config option CONFIG_PRINTK_NMI).
And finally, there are a few places in the kernel that need to
specify code blocks where all printk calls are to be deferred
printing. Previously the NMI tracking API was being (mis)used
for this purpose. This series introduces an official and
explicit interface for such cases. (Note that all deferred
printing will be removed anyway, once printing kthreads are
introduced.)
Changes since v3:
- Remove safe context tracking in vprintk().
- Add safe context tracking for @console_owner usage since that
is also a component of the printing code.
- Refactor syslog_print() so that it is easier to understand
and follow the locking logic.
- Introduce printk_deferred_enter/exit functions to be used by
code that needs to specify code block where all printk calls
are to be deferred printing.
John Ogness
[0] https://lore.kernel.org/lkml/20210624111148.5190-1-john.ogness@linutronix.de
John Ogness (6):
lib/nmi_backtrace: explicitly serialize banner and regs
printk: track/limit recursion
printk: remove safe buffers
printk: remove NMI tracking
printk: convert @syslog_lock to mutex
printk: syslog: close window between wait and read
arch/arm/kernel/smp.c | 4 +-
arch/powerpc/kernel/traps.c | 1 -
arch/powerpc/kernel/watchdog.c | 5 -
arch/powerpc/kexec/crash.c | 2 +-
include/linux/hardirq.h | 2 -
include/linux/printk.h | 41 ++--
init/Kconfig | 5 -
kernel/kexec_core.c | 1 -
kernel/panic.c | 3 -
kernel/printk/internal.h | 25 ---
kernel/printk/printk.c | 268 ++++++++++++++----------
kernel/printk/printk_safe.c | 364 +--------------------------------
kernel/trace/trace.c | 4 +-
lib/nmi_backtrace.c | 13 +-
14 files changed, 194 insertions(+), 544 deletions(-)
base-commit: 70333dec446292cd896cd051d2ebd6808b328949
--
2.20.1
Powered by blists - more mailing lists