mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [GIT PULL] printk for 6.2
@ 2022-12-08 15:06 Petr Mladek
  2022-12-12 17:33 ` pr-tracker-bot
  0 siblings, 1 reply; 2+ messages in thread
From: Petr Mladek @ 2022-12-08 15:06 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Sergey Senozhatsky, Steven Rostedt, John Ogness, Andy Shevchenko,
	Rasmus Villemoes, Sebastian Andrzej Siewior, Thomas Gleixner,
	Jan Kara, Paul E. McKenney, rcu, Peter Zijlstra, linux-kernel

Hi Linus,

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

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

- Add NMI-safe SRCU reader API. It uses atomic_inc() instead of
  this_cpu_inc() on strong load-store architectures.

- Introduce new console_list_lock to synchronize a manipulation of the list
  of registered consoles and their flags.

  It is a first step in removing the big-kernel-lock-like behavior of
  console_lock(). This semaphore still serializes console->write()
  calbacks against:

    - each other. It primary prevents potential races between early and
      proper console drivers using the same device.

   - suspend()/resume() callbacks and init() operations in some drivers.

   - various other operations in the tty/vt and framebufer susbsystems.
     It is likely that console_lock() serializes even operations that are
     not directly conflicting with the console->write() callbacks here.
     This is the most complicated big-kernel-lock aspect of
     the console_lock() that will be hard to untangle.

- Introduce new console_srcu lock that is used to safely iterate and
  access the registered console drivers under SRCU read lock.

  It is a prerequisite for introducing atomic console drivers and console
  kthreads. It will reduce the complexity of serialization against normal
  consoles and console_lock(). Also it should remove the risk of deadlock
  during critical situations, like Oops or panic, when only atomic consoles
  are registered.

- Check whether the console is registered instead of enabled on many
  locations. It was a historical leftover.

- Cleanly force a preferred console in xenfb code instead of a dirty hack.

- A lot of code and comment clean ups and improvements.

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

Notes:

1. The NMI-safe SRCU read API code is merged from Paul's RCU tree.
   It is going to be part of Paul's pull request as well.

2. The major changes reached linux-next at Oct 22. The branch
   rework/console-list-lock has been rebased two times last
   week to get follow up fixes from RCU tree. They fixed issues
   with non-standard configurations.


IMHO, the biggest risk of these changes would be in introducing new
races or deadlocks because of the new locks.

Anyway, it should be step in the right direction. The big-kernel-lock
behavior of console_lock() is a constant source of problems. The SRCU
lock allows to iterate the list of consoles safely anytime. Also there
are many new lockdep asserts that would allow to catch and nail down
potential problems.

----------------------------------------------------------------
Andy Shevchenko (1):
      test_printf: Refactor fwnode_pointer() to make it more readable

Frederic Weisbecker (3):
      srcu: Warn when NMI-unsafe API is used in NMI
      srcu: Explain the reason behind the read side critical section on GP start
      srcu: Debug NMI safety even on archs that don't require it

John Ogness (40):
      rcu: Implement lockdep_rcu_enabled for !CONFIG_DEBUG_LOCK_ALLOC
      printk: Prepare for SRCU console list protection
      printk: register_console: use "registered" for variable names
      printk: move @seq initialization to helper
      printk: fix setting first seq for consoles
      um: kmsg_dump: only dump when no output console available
      tty: serial: kgdboc: document console_lock usage
      tty: tty_io: document console_lock usage
      proc: consoles: document console_lock usage
      printk: introduce console_list_lock
      console: introduce wrappers to read/write console flags
      um: kmsg_dumper: use srcu console list iterator
      kdb: use srcu console list iterator
      printk: console_flush_all: use srcu console list iterator
      printk: __pr_flush: use srcu console list iterator
      printk: console_is_usable: use console_srcu_read_flags
      printk: console_unblank: use srcu console list iterator
      printk: console_flush_on_panic: use srcu console list iterator
      printk: console_device: use srcu console list iterator
      console: introduce console_is_registered()
      serial_core: replace uart_console_enabled() with uart_console_registered()
      tty: nfcon: use console_is_registered()
      efi: earlycon: use console_is_registered()
      tty: hvc: use console_is_registered()
      tty: serial: earlycon: use console_is_registered()
      tty: serial: pic32_uart: use console_is_registered()
      tty: serial: samsung_tty: use console_is_registered()
      tty: serial: xilinx_uartps: use console_is_registered()
      usb: early: xhci-dbc: use console_is_registered()
      netconsole: avoid CON_ENABLED misuse to track registration
      printk, xen: fbfront: create/use safe function for forcing preferred
      tty: tty_io: use console_list_lock for list synchronization
      proc: consoles: use console_list_lock for list iteration
      tty: serial: kgdboc: use srcu console list iterator
      tty: serial: kgdboc: use console_list_lock for list traversal
      tty: serial: kgdboc: synchronize tty_find_polling_driver() and register_console()
      tty: serial: kgdboc: use console_list_lock to trap exit
      printk: relieve console_lock of list synchronization duties
      tty: serial: sh-sci: use setup() callback for early console
      printk: htmldocs: add missing description

Paul E. McKenney (9):
      srcu: Convert ->srcu_lock_count and ->srcu_unlock_count to atomic
      srcu: Create an srcu_read_lock_nmisafe() and srcu_read_unlock_nmisafe()
      srcu: Check for consistent per-CPU per-srcu_struct NMI safety
      srcu: Check for consistent global per-srcu_struct NMI safety
      arch/x86: Add ARCH_HAS_NMI_SAFE_THIS_CPU_OPS Kconfig option
      arch/arm64: Add ARCH_HAS_NMI_SAFE_THIS_CPU_OPS Kconfig option
      arch/loongarch: Add ARCH_HAS_NMI_SAFE_THIS_CPU_OPS Kconfig option
      arch/s390: Add ARCH_HAS_NMI_SAFE_THIS_CPU_OPS Kconfig option
      rcu: Make SRCU mandatory

Petr Mladek (1):
      Merge branch 'rework/console-list-lock' into for-linus

Thomas Gleixner (2):
      serial: kgdboc: Lock console list in probe function
      printk: Convert console_drivers list to hlist

Wang Honghui (1):
      printk: fix a typo of comment

Xu Panda (1):
      printk: use strscpy() to instead of strlcpy()

Zqiang (1):
      srcu: Make Tiny synchronize_srcu() check for readers

ye xingchen (1):
      vsprintf: replace in_irq() with in_hardirq()

 .clang-format                       |   1 +
 arch/Kconfig                        |   3 +
 arch/arm64/Kconfig                  |   1 +
 arch/loongarch/Kconfig              |   1 +
 arch/m68k/emu/nfcon.c               |   9 +-
 arch/s390/Kconfig                   |   1 +
 arch/um/kernel/kmsg_dump.c          |  24 +-
 arch/x86/Kconfig                    |   1 +
 drivers/firmware/efi/earlycon.c     |   8 +-
 drivers/net/netconsole.c            |  21 +-
 drivers/tty/hvc/hvc_console.c       |   4 +-
 drivers/tty/serial/8250/8250_core.c |   2 +-
 drivers/tty/serial/earlycon.c       |   4 +-
 drivers/tty/serial/kgdboc.c         |  46 +++-
 drivers/tty/serial/pic32_uart.c     |   4 +-
 drivers/tty/serial/samsung_tty.c    |   2 +-
 drivers/tty/serial/serial_core.c    |  14 +-
 drivers/tty/serial/sh-sci.c         |  20 +-
 drivers/tty/serial/xilinx_uartps.c  |   2 +-
 drivers/tty/tty_io.c                |  18 +-
 drivers/usb/early/xhci-dbc.c        |   2 +-
 drivers/video/fbdev/xen-fbfront.c   |  12 +-
 fs/proc/consoles.c                  |  21 +-
 include/linux/console.h             | 129 +++++++++-
 include/linux/rcupdate.h            |   5 +
 include/linux/rcutiny.h             |   4 -
 include/linux/serial_core.h         |  10 +-
 include/linux/srcu.h                |  72 +++++-
 include/linux/srcutree.h            |   5 +-
 kernel/debug/kdb/kdb_io.c           |  18 +-
 kernel/printk/printk.c              | 498 ++++++++++++++++++++++++++++--------
 kernel/printk/printk_ringbuffer.c   |   2 +-
 kernel/rcu/Kconfig                  |  14 +-
 kernel/rcu/Kconfig.debug            |   3 -
 kernel/rcu/rcu.h                    |   8 +-
 kernel/rcu/rcutorture.c             |  11 +-
 kernel/rcu/srcutiny.c               |  10 +
 kernel/rcu/srcutree.c               | 100 ++++++--
 kernel/rcu/update.c                 |  18 +-
 lib/test_printf.c                   |  26 +-
 lib/vsprintf.c                      |   2 +-
 41 files changed, 899 insertions(+), 257 deletions(-)

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

* Re: [GIT PULL] printk for 6.2
  2022-12-08 15:06 [GIT PULL] printk for 6.2 Petr Mladek
@ 2022-12-12 17:33 ` pr-tracker-bot
  0 siblings, 0 replies; 2+ messages in thread
From: pr-tracker-bot @ 2022-12-12 17:33 UTC (permalink / raw)
  To: Petr Mladek
  Cc: Linus Torvalds, Sergey Senozhatsky, Steven Rostedt, John Ogness,
	Andy Shevchenko, Rasmus Villemoes, Sebastian Andrzej Siewior,
	Thomas Gleixner, Jan Kara, Paul E. McKenney, rcu, Peter Zijlstra,
	linux-kernel

The pull request you sent on Thu, 8 Dec 2022 16:06:59 +0100:

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

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/98d0052d0d9dcd5323833482712b5799ed0bbb0b

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

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

end of thread, other threads:[~2022-12-12 17:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-08 15:06 [GIT PULL] printk for 6.2 Petr Mladek
2022-12-12 17:33 ` pr-tracker-bot

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

all inboxes | Powered by JetHome®