[PATCH tty v11 0/2] Convert 8250 to NBCON, take 2

From: John Ogness

Date: Wed Jul 29 2026 - 08:37:26 EST


Hi,

This is v11 of a series to convert the 8250 driver to an NBCON
console, providing both threaded and atomic printing
implementations. v10 of this series is here [0].

Note that v5 was pulled into the 6.14 merge window, but was
then reverted before the 6.14-rc1 release due to kernel test
robot problems. It turned out that the problems were related
to general 8250 driver issues. Those issues have now been
addressed mainline, paving the way for a second take at
converting the 8250 driver to NBCON.

The changes since v10:

- Change the main write functions to be helper functions:

serial8250_console_fifo_write() -> __serial8250_console_fifo_write()
serial8250_console_byte_write() -> __serial8250_console_byte_write()

These functions take additional char array and size arguments for
text to write. This allows the functions to be used for special
text. In particular, writing the extra '\n' after a
handover/takeover.

- Add new serial8250_console_fifo_write() and
serial8250_console_byte_write() functions that are simple wrappers
for the respective helpers.

- Add a __serial8250_console_write() function to handle calling the
appropriate write functions for the various use_fifo/!use_fifo and
console_line_ended/!console_line_ended scenarios. This not only
fixes a possible FIFO overrun pointed out by Sashiko for the
"use_fifo && !console_line_ended" case, but also also consolidates
all the actual writing code into a single helper.

- Toggle unsafe after 2 potentially large delays in the post-write
part of serial8250_console_write(). This reduces the likelihood of
corruption in panic output by providing more points to recognize
ownership transfer.

John Ogness

[0] https://lore.kernel.org/lkml/20260727145332.231949-1-john.ogness@xxxxxxxxxxxxx

John Ogness (2):
serial: 8250: Switch to nbcon console, take 2
Revert "serial: 8250: drop lockdep annotation from
serial8250_clear_IER()"

drivers/tty/serial/8250/8250.h | 4 +-
drivers/tty/serial/8250/8250_core.c | 65 ++++++--
drivers/tty/serial/8250/8250_dw.c | 2 +-
drivers/tty/serial/8250/8250_port.c | 245 +++++++++++++++++++++++-----
include/linux/serial_8250.h | 16 +-
5 files changed, 277 insertions(+), 55 deletions(-)


base-commit: a5339effdd523b4b3502fba5358d44e83c76a565
--
2.47.3