From: John Ogness <john.ogness@linutronix.de>
To: Petr Mladek <pmladek@suse.com>
Cc: "Sergey Senozhatsky" <senozhatsky@chromium.org>,
"Steven Rostedt" <rostedt@goodmis.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
linux-kernel@vger.kernel.org,
"Andrew Morton" <akpm@linux-foundation.org>,
"Peter Zijlstra" <peterz@infradead.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
"Michael Ellerman" <mpe@ellerman.id.au>,
"Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
"Paul Mackerras" <paulus@samba.org>,
"Ingo Molnar" <mingo@redhat.com>,
"Borislav Petkov" <bp@alien8.de>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
"Jason Wessel" <jason.wessel@windriver.com>,
"Daniel Thompson" <daniel.thompson@linaro.org>,
"Douglas Anderson" <dianders@chromium.org>,
"Srikar Dronamraju" <srikar@linux.vnet.ibm.com>,
"Gautham R. Shenoy" <ego@linux.vnet.ibm.com>,
"Chengyang Fan" <cy.fan@huawei.com>,
"Christophe Leroy" <christophe.leroy@csgroup.eu>,
"Bhaskar Chowdhury" <unixbhaskar@gmail.com>,
"Nicholas Piggin" <npiggin@gmail.com>,
"Cédric Le Goater" <clg@kaod.org>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
linuxppc-dev@lists.ozlabs.org,
kgdb-bugreport@lists.sourceforge.net,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Masahiro Yamada" <masahiroy@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"Tetsuo Handa" <penguin-kernel@I-love.SAKURA.ne.jp>,
"Vitor Massaru Iha" <vitor@massaru.org>,
"Sedat Dilek" <sedat.dilek@gmail.com>,
"Changbin Du" <changbin.du@intel.com>,
"Sumit Garg" <sumit.garg@linaro.org>,
"Cengiz Can" <cengiz@kernel.wtf>,
"Jiri Slaby" <jirislaby@kernel.org>,
"Paul Cercueil" <paul@crapouillou.net>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"Andrew Jeffery" <andrew@aj.id.au>,
"Christophe JAILLET" <christophe.jaillet@wanadoo.fr>,
"kuldip dwivedi" <kuldip.dwivedi@puresoftware.com>,
"Wang Qing" <wangqing@vivo.com>,
"Andrij Abyzov" <aabyzov@slb.com>,
"Johan Hovold" <johan@kernel.org>,
"Eddie Huang" <eddie.huang@mediatek.com>,
"Claire Chang" <tientzu@chromium.org>,
"Hsin-Yi Wang" <hsinyi@chromium.org>,
"Zhang Qilong" <zhangqilong3@huawei.com>,
"Maciej W. Rozycki" <macro@orcam.me.uk>,
"Guenter Roeck" <linux@roeck-us.net>,
"Sergey Senozhatsky" <sergey.senozhatsky@gmail.com>,
"Serge Semin" <Sergey.Semin@baikalelectronics.ru>,
"Al Cooper" <alcooperx@gmail.com>,
linux-serial@vger.kernel.org, linux-mips@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org
Subject: [PATCH printk v1 00/10] printk: introduce atomic consoles and sync mode
Date: Tue, 3 Aug 2021 15:18:51 +0206 [thread overview]
Message-ID: <20210803131301.5588-1-john.ogness@linutronix.de> (raw)
Hi,
This is the next part of our printk-rework effort (points 3 and
4 of the LPC 2019 summary [0]).
Here the concept of "atomic consoles" is introduced through a
new (optional) write_atomic() callback for console drivers. This
callback must be implemented as an NMI-safe variant of the
write() callback, meaning that it can function from any context
without relying on questionable tactics such as ignoring locking
and also without relying on the synchronization of console
semaphore.
As an example of how such an atomic console can look like, this
series implements write_atomic() for the 8250 UART driver.
This series also introduces a new console printing mode called
"sync mode" that is only activated when the kernel is about to
end (such as panic, oops, shutdown, reboot). Sync mode can only
be activated if atomic consoles are available. A system without
registered atomic consoles will be unaffected by this series.
When in sync mode, the console printing behavior becomes:
- only consoles implementing write_atomic() will be called
- printing occurs within vprintk_store() instead of
console_unlock(), since the console semaphore is irrelevant
for atomic consoles
For systems that have registered atomic consoles, this series
improves the reliability of seeing crash messages by using new
locking techniques rather than "ignoring locks and hoping for
the best". In particular, atomic consoles rely on the
CPU-reentrant spinlock (i.e. the printk cpulock) for
synchronizing console output.
John Ogness
[0] https://lore.kernel.org/lkml/87k1acz5rx.fsf@linutronix.de/
John Ogness (10):
printk: relocate printk cpulock functions
printk: rename printk cpulock API and always disable interrupts
kgdb: delay roundup if holding printk cpulock
printk: relocate printk_delay()
printk: call boot_delay_msec() in printk_delay()
printk: use seqcount_latch for console_seq
console: add write_atomic interface
printk: introduce kernel sync mode
kdb: if available, only use atomic consoles for output mirroring
serial: 8250: implement write_atomic
arch/powerpc/include/asm/smp.h | 1 +
arch/powerpc/kernel/kgdb.c | 10 +-
arch/powerpc/kernel/smp.c | 5 +
arch/x86/kernel/kgdb.c | 9 +-
drivers/tty/serial/8250/8250.h | 47 ++-
drivers/tty/serial/8250/8250_core.c | 17 +-
drivers/tty/serial/8250/8250_fsl.c | 9 +
drivers/tty/serial/8250/8250_ingenic.c | 7 +
drivers/tty/serial/8250/8250_mtk.c | 29 +-
drivers/tty/serial/8250/8250_port.c | 92 ++--
drivers/tty/serial/8250/Kconfig | 1 +
include/linux/console.h | 32 ++
include/linux/kgdb.h | 3 +
include/linux/printk.h | 57 +--
include/linux/serial_8250.h | 5 +
kernel/debug/debug_core.c | 45 +-
kernel/debug/kdb/kdb_io.c | 16 +
kernel/printk/printk.c | 554 +++++++++++++++++--------
lib/Kconfig.debug | 3 +
lib/dump_stack.c | 4 +-
lib/nmi_backtrace.c | 4 +-
21 files changed, 684 insertions(+), 266 deletions(-)
base-commit: 23d8adcf8022b9483605531d8985f5b77533cb3a
--
2.20.1
next reply other threads:[~2021-08-03 13:13 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-03 13:12 John Ogness [this message]
2021-08-03 13:13 ` [PATCH printk v1 10/10] serial: 8250: implement write_atomic John Ogness
2021-08-03 14:07 ` Andy Shevchenko
2021-08-05 7:47 ` Jiri Slaby
2021-08-05 8:26 ` John Ogness
2021-08-03 13:52 ` [PATCH printk v1 00/10] printk: introduce atomic consoles and sync mode Andy Shevchenko
2021-08-05 15:47 ` Petr Mladek
2021-08-31 0:33 ` Sergey Senozhatsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210803131301.5588-1-john.ogness@linutronix.de \
--to=john.ogness@linutronix.de \
--cc=Sergey.Semin@baikalelectronics.ru \
--cc=aabyzov@slb.com \
--cc=akpm@linux-foundation.org \
--cc=alcooperx@gmail.com \
--cc=andrew@aj.id.au \
--cc=andriy.shevchenko@linux.intel.com \
--cc=benh@kernel.crashing.org \
--cc=bp@alien8.de \
--cc=cengiz@kernel.wtf \
--cc=changbin.du@intel.com \
--cc=christophe.jaillet@wanadoo.fr \
--cc=christophe.leroy@csgroup.eu \
--cc=clg@kaod.org \
--cc=cy.fan@huawei.com \
--cc=daniel.thompson@linaro.org \
--cc=dianders@chromium.org \
--cc=eddie.huang@mediatek.com \
--cc=ego@linux.vnet.ibm.com \
--cc=gregkh@linuxfoundation.org \
--cc=gustavoars@kernel.org \
--cc=hpa@zytor.com \
--cc=hsinyi@chromium.org \
--cc=jason.wessel@windriver.com \
--cc=jirislaby@kernel.org \
--cc=johan@kernel.org \
--cc=kgdb-bugreport@lists.sourceforge.net \
--cc=kuldip.dwivedi@puresoftware.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=macro@orcam.me.uk \
--cc=masahiroy@kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=ndesaulniers@google.com \
--cc=npiggin@gmail.com \
--cc=paul@crapouillou.net \
--cc=paulmck@kernel.org \
--cc=paulus@samba.org \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=peterz@infradead.org \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=sedat.dilek@gmail.com \
--cc=senozhatsky@chromium.org \
--cc=sergey.senozhatsky@gmail.com \
--cc=srikar@linux.vnet.ibm.com \
--cc=sumit.garg@linaro.org \
--cc=tglx@linutronix.de \
--cc=tientzu@chromium.org \
--cc=unixbhaskar@gmail.com \
--cc=vitor@massaru.org \
--cc=wangqing@vivo.com \
--cc=x86@kernel.org \
--cc=zhangqilong3@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).