Messages in this thread | | | From | John Ogness <> | Subject | [PATCH printk v2 0/8] wire up nbcon consoles | Date | Fri, 28 Jul 2023 02:08:25 +0206 |
| |
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
| |