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,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: [PATCH printk v2 0/8] wire up nbcon consoles
Date: Fri, 28 Jul 2023 02:08:25 +0206 [thread overview]
Message-ID: <20230728000233.50887-1-john.ogness@linutronix.de> (raw)
Hi,
This is v2 of a series to introduce the new non-BKL (nbcon)
consoles. This series is only a subset of the original
v1 [0]. In particular, this series represents patches 5-10 of
the v1 series. For information about the motivation of the
atomic consoles, please read the cover letter of v1.
This series focuses on wiring up the printk subsystem to
be able to use the nbcon consoles and implement their ownership
interfaces and rules. This series does _not_ include threaded
printing, atomic printing regions, or nbcon drivers. Those
features will be added in separate follow-up series.
There is not much that has _not_ changed since v1. Here is an
attempt to list the changes:
- new naming:
OLD NEW
bkl legacy
nobkl nbcon
CON_NO_BKL CON_NBCON
cons_() nbcon_()
- rather than allocating context objects per-cpu, per-prio, and
per-console, require the context object to sit on the stack
- serialize nbcon consoles with the console_lock until there
are no more boot consoles registered
- update @have_boot_console and @have_legacy_console on
unregister_console()
- only use @nbcon_seq for the nbcon sequence counter
- avoid console lock in __pr_flush() if there are only nbcon
consoles
- use only 1 state variable instead of CUR and REQ states
- replace saved states in the context with boolean flags
- use atomic long for nbcon_seq, expanded as needed on 32bit
systems
- instead of the owner performing the handover, now the owner
gives up ownership and the waiter takes ownership
- remove unnecessary state and context fields
- simplify sequence tracking by only allowing incrementing
(positive) updates
- simplify buffer handling by only allowing hostile takeovers
in the single panic context
- remove early buffer handling because there is no early window
- carefully consider individual state bits rather than
performing general set compares
- split the code for various locking strategies based on
complete methods rather than functional pieces
John Ogness
[0] https://lore.kernel.org/lkml/20230302195618.156940-1-john.ogness@linutronix.de
John Ogness (1):
printk: Provide debug_store() for nbcon debugging
Thomas Gleixner (7):
printk: Add non-BKL (nbcon) console basic infrastructure
printk: nbcon: Add acquire/release logic
printk: nbcon: Add buffer management
printk: nbcon: Add sequence handling
printk: nbcon: Add ownership state functions
printk: nbcon: Add emit function and callback function for atomic
printing
printk: nbcon: Add functions for drivers to mark unsafe regions
include/linux/console.h | 132 +++++
kernel/printk/Makefile | 2 +-
kernel/printk/internal.h | 29 ++
kernel/printk/printk.c | 156 ++++--
kernel/printk/printk_nbcon.c | 955 +++++++++++++++++++++++++++++++++++
5 files changed, 1243 insertions(+), 31 deletions(-)
create mode 100644 kernel/printk/printk_nbcon.c
base-commit: 132a90d1527fedba2d95085c951ccf00dbbebe41
--
2.39.2
next reply other threads:[~2023-07-28 0:02 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-28 0:02 John Ogness [this message]
2023-07-28 0:02 ` [PATCH printk v2 1/8] printk: Add non-BKL (nbcon) console basic infrastructure John Ogness
2023-07-28 14:47 ` Petr Mladek
2023-07-28 20:51 ` John Ogness
2023-07-31 15:39 ` Petr Mladek
2023-07-31 20:39 ` John Ogness
2023-08-01 10:35 ` Petr Mladek
2023-07-28 0:02 ` [PATCH printk v2 2/8] printk: Provide debug_store() for nbcon debugging John Ogness
2023-07-28 9:52 ` John Ogness
2023-07-28 15:22 ` Petr Mladek
2023-07-28 21:01 ` John Ogness
2023-07-31 15:43 ` Petr Mladek
2023-07-28 0:02 ` [PATCH printk v2 3/8] printk: nbcon: Add acquire/release logic John Ogness
2023-08-09 10:20 ` Petr Mladek
2023-08-29 9:43 ` John Ogness
2023-08-09 12:44 ` hostile takeover: " Petr Mladek
2023-08-29 10:22 ` John Ogness
2023-09-07 15:40 ` Petr Mladek
2023-09-08 14:48 ` John Ogness
2023-07-28 0:02 ` [PATCH printk v2 4/8] printk: nbcon: Add buffer management John Ogness
2023-08-09 14:06 ` Petr Mladek
2023-07-28 0:02 ` [PATCH printk v2 5/8] printk: nbcon: Add sequence handling John Ogness
2023-07-28 1:33 ` kernel test robot
2023-07-28 9:00 ` John Ogness
2023-08-10 9:28 ` Petr Mladek
2023-08-29 11:51 ` John Ogness
2023-07-28 0:02 ` [PATCH printk v2 6/8] printk: nbcon: Add ownership state functions John Ogness
2023-08-10 12:56 ` Petr Mladek
2023-08-29 12:23 ` John Ogness
2023-07-28 0:02 ` [PATCH printk v2 7/8] printk: nbcon: Add emit function and callback function for atomic printing John Ogness
2023-08-11 13:37 ` Petr Mladek
2023-08-29 13:08 ` John Ogness
2023-07-28 0:02 ` [PATCH printk v2 8/8] printk: nbcon: Add functions for drivers to mark unsafe regions John Ogness
2023-08-11 13:50 ` Petr Mladek
2023-08-29 13:13 ` John Ogness
2023-08-11 13:56 ` [PATCH printk v2 0/8] wire up nbcon consoles Petr Mladek
2023-08-29 13:21 ` John Ogness
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=20230728000233.50887-1-john.ogness@linutronix.de \
--to=john.ogness@linutronix.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=senozhatsky@chromium.org \
--cc=tglx@linutronix.de \
/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
all inboxes | Powered by JetHome®