printk: nbcon: Add sequence handling
authorThomas Gleixner <tglx@linutronix.de>
Sat, 16 Sep 2023 19:20:05 +0000 (21:26 +0206)
committerPetr Mladek <pmladek@suse.com>
Mon, 18 Sep 2023 15:03:45 +0000 (17:03 +0200)
commitad56ebd1d79b216dc147474fac89a11daf6b10df
tree17c20b002afe4dbdd8b6a1c284ce6a7acc729da9
parent4b08d9e24f50163a8bda0a702b45b06bf841d792
printk: nbcon: Add sequence handling

Add an atomic_long_t field @nbcon_seq to the console struct to
store the sequence number for nbcon consoles. For nbcon consoles
this will be used instead of the non-atomic @seq field. The new
field allows for safe atomic sequence number updates without
requiring any locking.

On 64bit systems the new field stores the full sequence number.
On 32bit systems the new field stores the lower 32 bits of the
sequence number, which are expanded to 64bit as needed by
folding the values based on the sequence numbers available in
the ringbuffer.

For 32bit systems, having a 32bit representation in the console
is sufficient. If a console ever gets more than 2^31 records
behind the ringbuffer then this is the least of the problems.

Co-developed-by: John Ogness <john.ogness@linutronix.de>
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Signed-off-by: Thomas Gleixner (Intel) <tglx@linutronix.de>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20230916192007.608398-7-john.ogness@linutronix.de
include/linux/console.h
kernel/printk/internal.h
kernel/printk/nbcon.c
kernel/printk/printk.c