public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH printk v7 00/35] wire up write_atomic() printing
@ 2024-08-04  0:51 John Ogness
  2024-08-04  0:51 ` [PATCH printk v7 01/35] printk: Add notation to console_srcu locking John Ogness
                   ` (34 more replies)
  0 siblings, 35 replies; 51+ messages in thread
From: John Ogness @ 2024-08-04  0:51 UTC (permalink / raw)
  To: Petr Mladek
  Cc: Sergey Senozhatsky, Steven Rostedt, Thomas Gleixner, linux-kernel,
	Miguel Ojeda, Paul E. McKenney, Greg Kroah-Hartman, Jiri Slaby,
	linux-serial, Russell King, Tony Lindgren, Andy Shevchenko,
	Arnd Bergmann, Uwe Kleine-König, Théo Lebrun,
	Linus Walleij, Lino Sanfilippo, Ilpo Järvinen, Konrad Dybcio,
	Sebastian Andrzej Siewior, Andrew Morton, Jani Nikula,
	Kefeng Wang, Joel Granados, Uros Bizjak, Baoquan He, Lukas Wunner,
	Frederic Weisbecker, Neeraj Upadhyay, Joel Fernandes,
	Josh Triplett, Boqun Feng, Uladzislau Rezki, Mathieu Desnoyers,
	Lai Jiangshan, Zqiang, rcu, Peter Zijlstra, Ingo Molnar,
	Will Deacon, Waiman Long

Hi,

This is v7 of a series to wire up the nbcon consoles so that
they actually perform printing using their write_atomic()
callback. v6 is here [0]. For information about the motivation
of the atomic consoles, please read the cover letter of v1 [1].

The main focus of this series:

- For nbcon consoles, always call write_atomic() directly from
  printk() caller context for the panic CPU.

- For nbcon consoles, call write_atomic() when unlocking the
  console lock.

- Only perform the console lock/unlock dance if legacy or boot
  consoles are registered.

- For legacy consoles, if nbcon consoles are registered, do not
  attempt to print from printk() caller context for the panic
  CPU until nbcon consoles have had a chance to print the most
  significant messages.

- Mark emergency sections. In these sections, every printk()
  call will attempt to directly flush to the consoles using the
  EMERGENCY priority.

This series does _not_ include threaded printing or nbcon
drivers. Those features will be added in separate follow-up
series.

The changes since v6:

- When a CPU is in an emergency state, printk() calls will now
  flush directly to all consoles using the EMERGENCY priority.

- Remove usage and implementation of
  nbcon_cpu_emergency_flush().

- Add printk_get_console_flush_type() to query available flush
  types and use it at all flushing call sites.

- In vprintk_emit(), always use nbcon_atomic flushing if it is
  available.

- When exiting nbcon_device_release(), flush using the legacy
  loop if nbcon_atomic flushing is not available.

- In console_flush_on_panic(), make sure nbcon_atomic flushing
  is allowed before flushing.

- In pr_flush(), always take the console_lock because there is
  no synchronization against register_console() and legacy
  consoles could register while waiting.

- In __wake_up_klogd(), remove check if PENDING_OUTPUT is
  needed. If PENDING_OUTPUT is set, it is needed.

- Rename is_printk_deferred() to is_printk_legacy_deferred().

- Remove nbcon_init(), consolidate it into nbcon_alloc().

- Improve documentation about nbcon owner/waiter matching
  rules.

- Allow nbcon_get_cpu_emergency_nesting() to run without
  migration disabled.

- Clarify that nbcon_get_default_prio() can run without
  migration disabled.

John Ogness

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

John Ogness (30):
  printk: Add notation to console_srcu locking
  printk: nbcon: Consolidate alloc() and init()
  printk: nbcon: Clarify rules of the owner/waiter matching
  printk: nbcon: Remove return value for write_atomic()
  printk: nbcon: Add detailed doc for write_atomic()
  printk: nbcon: Add callbacks to synchronize with driver
  printk: nbcon: Use driver synchronization while (un)registering
  serial: core: Provide low-level functions to lock port
  serial: core: Introduce wrapper to set @uart_port->cons
  console: Improve console_srcu_read_flags() comments
  nbcon: Add API to acquire context for non-printing operations
  serial: core: Acquire nbcon context in port->lock wrapper
  printk: nbcon: Do not rely on proxy headers
  printk: Make console_is_usable() available to nbcon.c
  printk: Let console_is_usable() handle nbcon
  printk: Add @flags argument for console_is_usable()
  printk: nbcon: Add helper to assign priority based on CPU state
  printk: Track registered boot consoles
  printk: nbcon: Use nbcon consoles in console_flush_all()
  printk: Add is_printk_legacy_deferred()
  printk: nbcon: Flush new records on device_release()
  printk: Flush nbcon consoles first on panic
  printk: nbcon: Add unsafe flushing on panic
  printk: Avoid console_lock dance if no legacy or boot consoles
  printk: Track nbcon consoles
  printk: Coordinate direct printing in panic
  printk: Add helper for flush type logic
  panic: Mark emergency section in oops
  rcu: Mark emergency sections in rcu stalls
  lockdep: Mark emergency sections in lockdep splats

Petr Mladek (1):
  printk: Properly deal with nbcon consoles on seq init

Sebastian Andrzej Siewior (1):
  printk: Check printk_deferred_enter()/_exit() usage

Thomas Gleixner (3):
  printk: nbcon: Provide function to flush using write_atomic()
  printk: nbcon: Implement emergency sections
  panic: Mark emergency section in warn

 drivers/tty/serial/8250/8250_core.c |   6 +-
 drivers/tty/serial/amba-pl011.c     |   2 +-
 drivers/tty/serial/serial_core.c    |  16 +-
 include/linux/console.h             | 110 +++++-
 include/linux/printk.h              |  33 +-
 include/linux/serial_core.h         | 117 +++++-
 kernel/locking/lockdep.c            |  83 +++-
 kernel/panic.c                      |   9 +
 kernel/printk/internal.h            | 130 ++++++-
 kernel/printk/nbcon.c               | 565 +++++++++++++++++++++++++---
 kernel/printk/printk.c              | 250 +++++++++---
 kernel/printk/printk_ringbuffer.h   |   2 +
 kernel/printk/printk_safe.c         |  23 +-
 kernel/rcu/tree_exp.h               |   7 +
 kernel/rcu/tree_stall.h             |   9 +
 15 files changed, 1211 insertions(+), 151 deletions(-)


base-commit: 8bf100092d60bf586bbc1a3a2cd833bb212d9d53
-- 
2.39.2


^ permalink raw reply	[flat|nested] 51+ messages in thread

end of thread, other threads:[~2024-08-08  9:03 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-04  0:51 [PATCH printk v7 00/35] wire up write_atomic() printing John Ogness
2024-08-04  0:51 ` [PATCH printk v7 01/35] printk: Add notation to console_srcu locking John Ogness
2024-08-04  0:51 ` [PATCH printk v7 02/35] printk: nbcon: Consolidate alloc() and init() John Ogness
2024-08-05 14:39   ` Petr Mladek
2024-08-04  0:51 ` [PATCH printk v7 03/35] printk: Properly deal with nbcon consoles on seq init John Ogness
2024-08-04  0:51 ` [PATCH printk v7 04/35] printk: Check printk_deferred_enter()/_exit() usage John Ogness
2024-08-04  0:51 ` [PATCH printk v7 05/35] printk: nbcon: Clarify rules of the owner/waiter matching John Ogness
2024-08-04  0:51 ` [PATCH printk v7 06/35] printk: nbcon: Remove return value for write_atomic() John Ogness
2024-08-04  0:51 ` [PATCH printk v7 07/35] printk: nbcon: Add detailed doc " John Ogness
2024-08-04  0:51 ` [PATCH printk v7 08/35] printk: nbcon: Add callbacks to synchronize with driver John Ogness
2024-08-04  0:51 ` [PATCH printk v7 09/35] printk: nbcon: Use driver synchronization while (un)registering John Ogness
2024-08-04  0:51 ` [PATCH printk v7 10/35] serial: core: Provide low-level functions to lock port John Ogness
2024-08-04  0:51 ` [PATCH printk v7 11/35] serial: core: Introduce wrapper to set @uart_port->cons John Ogness
2024-08-04  0:51 ` [PATCH printk v7 12/35] console: Improve console_srcu_read_flags() comments John Ogness
2024-08-04  0:51 ` [PATCH printk v7 13/35] nbcon: Add API to acquire context for non-printing operations John Ogness
2024-08-04  0:51 ` [PATCH printk v7 14/35] serial: core: Acquire nbcon context in port->lock wrapper John Ogness
2024-08-04  0:51 ` [PATCH printk v7 15/35] printk: nbcon: Do not rely on proxy headers John Ogness
2024-08-04  0:51 ` [PATCH printk v7 16/35] printk: Make console_is_usable() available to nbcon.c John Ogness
2024-08-04  0:51 ` [PATCH printk v7 17/35] printk: Let console_is_usable() handle nbcon John Ogness
2024-08-04  0:51 ` [PATCH printk v7 18/35] printk: Add @flags argument for console_is_usable() John Ogness
2024-08-04  0:51 ` [PATCH printk v7 19/35] printk: nbcon: Add helper to assign priority based on CPU state John Ogness
2024-08-04  0:51 ` [PATCH printk v7 20/35] printk: nbcon: Provide function to flush using write_atomic() John Ogness
2024-08-05 14:59   ` Petr Mladek
2024-08-04  0:51 ` [PATCH printk v7 21/35] printk: Track registered boot consoles John Ogness
2024-08-04  0:51 ` [PATCH printk v7 22/35] printk: nbcon: Use nbcon consoles in console_flush_all() John Ogness
2024-08-04  0:51 ` [PATCH printk v7 23/35] printk: Add is_printk_legacy_deferred() John Ogness
2024-08-05 15:03   ` Petr Mladek
2024-08-04  0:51 ` [PATCH printk v7 24/35] printk: nbcon: Flush new records on device_release() John Ogness
2024-08-05 15:31   ` Petr Mladek
2024-08-07  1:15     ` John Ogness
2024-08-07 12:48       ` Petr Mladek
2024-08-04  0:51 ` [PATCH printk v7 25/35] printk: Flush nbcon consoles first on panic John Ogness
2024-08-06  8:31   ` Petr Mladek
2024-08-04  0:51 ` [PATCH printk v7 26/35] printk: nbcon: Add unsafe flushing " John Ogness
2024-08-04  0:51 ` [PATCH printk v7 27/35] printk: Avoid console_lock dance if no legacy or boot consoles John Ogness
2024-08-06  8:40   ` Petr Mladek
2024-08-04  0:51 ` [PATCH printk v7 28/35] printk: Track nbcon consoles John Ogness
2024-08-04  0:51 ` [PATCH printk v7 29/35] printk: Coordinate direct printing in panic John Ogness
2024-08-06  9:59   ` Petr Mladek
2024-08-06 17:29     ` Linus Torvalds
2024-08-06 12:17   ` Petr Mladek
2024-08-04  0:51 ` [PATCH printk v7 30/35] printk: Add helper for flush type logic John Ogness
2024-08-07 11:39   ` Petr Mladek
2024-08-07 14:11     ` John Ogness
2024-08-08  9:03       ` Petr Mladek
2024-08-04  0:51 ` [PATCH printk v7 31/35] printk: nbcon: Implement emergency sections John Ogness
2024-08-07 12:52   ` Petr Mladek
2024-08-04  0:51 ` [PATCH printk v7 32/35] panic: Mark emergency section in warn John Ogness
2024-08-04  0:51 ` [PATCH printk v7 33/35] panic: Mark emergency section in oops John Ogness
2024-08-04  0:51 ` [PATCH printk v7 34/35] rcu: Mark emergency sections in rcu stalls John Ogness
2024-08-04  0:51 ` [PATCH printk v7 35/35] lockdep: Mark emergency sections in lockdep splats John Ogness

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox