[GIT PULL] printk for 6.7

From: Petr Mladek
Date: Thu Nov 02 2023 - 12:22:55 EST


Hi Linus,

please pull the latest printk changes from

git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git tags/printk-for-6.7

================================

- Another preparation step for introducing printk kthreads. The main piece
is a per-console lock with several features:

- Support three priorities: normal, emergency, and panic. They will be
defined by a context where the lock is taken. A context with a higher
priority is allowed to take over the lock from a context with a lower
one.

The plan is to use the emergency context for Oops and WARN() messages,
and also by watchdogs.

The panic() context will be used on panic CPU.

- The owner might enter/exit regions where it is not safe to take over
the lock. It allows the take over the lock a safe way in the middle
of a message.

For example, serial drivers emit characters one by one. And
the serial port is in a safe state in between.

Only the final console_flush_in_panic() will be allowed to take over
the lock even in the unsafe state (last chance, pray, and hope).

- A higher priority context might busy wait with a timeout. The current
owner is informed about the waiter and releases the lock on exit from
the unsafe state.

- The new lock is safe even in atomic contexts, including NMI.

Another change is a safe manipulation of per-console sequence number
counter under the new lock.

- simple_strntoull() micro-optimization

- Reduce pr_flush() pooling time.

- Calm down false warning about possible buffer invalid access to
console buffers when CONFIG_PRINTK is disabled.

----------------------------------------------------------------
Alexey Dobriyan (1):
vsprintf: uninline simple_strntoull(), reorder arguments

John Ogness (3):
printk: Make static printk buffers available to nbcon
printk: fix illegal pbufs access for !CONFIG_PRINTK
printk: flush consoles before checking progress

Li kunyu (1):
printk: printk: Remove unnecessary statements'len = 0;'

Petr Mladek (5):
Merge branch 'rework/misc-cleanups' into for-linus
printk: Reduce pr_flush() pooling time
Merge branch 'for-6.7' into for-linus
Merge branch 'rework/misc-cleanups' into for-linus
Merge branch 'rework/nbcon-base' into for-linus

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 ownership state functions
printk: nbcon: Add sequence handling
printk: nbcon: Add emit function and callback function for atomic printing
printk: nbcon: Allow drivers to mark unsafe regions and check state

include/linux/console.h | 129 ++++++
kernel/printk/Makefile | 2 +-
kernel/printk/internal.h | 31 ++
kernel/printk/nbcon.c | 1029 ++++++++++++++++++++++++++++++++++++++++++++++
kernel/printk/printk.c | 158 ++++---
lib/vsprintf.c | 25 +-
6 files changed, 1295 insertions(+), 79 deletions(-)
create mode 100644 kernel/printk/nbcon.c