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

John Ogness posted 2 patches 2 days, 11 hours ago
There is a newer version of this series
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 | 200 +++++++++++++++++++++++-----
include/linux/serial_8250.h         |  16 ++-
5 files changed, 236 insertions(+), 51 deletions(-)
[PATCH tty v8 0/2] Convert 8250 to NBCON, take 2
Posted by John Ogness 2 days, 11 hours ago
Hi,

This is v8 of a series to convert the 8250 driver to an NBCON
console, providing both threaded and atomic printing
implementations. v7 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 v7:

- Perform the following renames to make it clear that these
  fields and functions are only related to the console:

  In struct uart_8250_port:

    avoid_modem_status_work -> console_msr_work_allow
    modem_status_work       -> console_msr_work

  The irq_work handler:

    modem_status_handler()  -> console_msr_handler()

  Note that this also inverts the flag for allowing msr_work
  in order to avoid using a double-negative for the reader:

    if (!avoid_modem_status_work)

  changes to:

    if (console_msr_work_allow)

- Modify uart_8250_port->console_msr_work_allow under the
  port->lock in order to synchronize with its reader
  serial8250_console_write().

- In serial8250_suspend_port() and serial8250_resume_port(),
  move the @console_msr_work_allow update inside
  "if (uart_console(port))". This involves refactoring the
  neighboring code as well and has the nice side-effect of
  grouping all the console specialties into a single block.

- Change the IER-disabling comments in
  serial8250_console_write() and serial8250_put_poll_char()
  to mention what type of synchronization is used when the
  port->lock is not taken.

The changes v6 -> v7:

- Add irq_work_sync() calls to make sure there is no pending
  modem status work when suspending or unregistering the
  console.

- In the put_poll_char() callback, use __serial8250_clear_IER()
  because KDB/KGDB do not acquire the port lock to print.

- In serial8250_console_write(), re-enter unsafe section after
  printing text, even if ownership was _not_ lost. The final
  actions need to be performed within an unsafe section.

John Ogness

[0] https://lore.kernel.org/lkml/20260720135407.3925-1-john.ogness@linutronix.de

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 | 200 +++++++++++++++++++++++-----
 include/linux/serial_8250.h         |  16 ++-
 5 files changed, 236 insertions(+), 51 deletions(-)


base-commit: 782f4dbd1794b4f30dc116a7ca42c5962c409be8
-- 
2.47.3