• Linus Torvalds's avatar
    Merge tag 'printk-for-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux · 98d0052d
    Linus Torvalds authored
    Pull printk updates from Petr Mladek:
    
     - 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.
    
       This 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.
    
       This 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.
    
    * tag 'printk-for-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux: (47 commits)
      printk: htmldocs: add missing description
      tty: serial: sh-sci: use setup() callback for early console
      printk: relieve console_lock of list synchronization duties
      tty: serial: kgdboc: use console_list_lock to trap exit
      tty: serial: kgdboc: synchronize tty_find_polling_driver() and register_console()
      tty: serial: kgdboc: use console_list_lock for list traversal
      tty: serial: kgdboc: use srcu console list iterator
      proc: consoles: use console_list_lock for list iteration
      tty: tty_io: use console_list_lock for list synchronization
      printk, xen: fbfront: create/use safe function for forcing preferred
      netconsole: avoid CON_ENABLED misuse to track registration
      usb: early: xhci-dbc: use console_is_registered()
      tty: serial: xilinx_uartps: use console_is_registered()
      tty: serial: samsung_tty: use console_is_registered()
      tty: serial: pic32_uart: use console_is_registered()
      tty: serial: earlycon: use console_is_registered()
      tty: hvc: use console_is_registered()
      efi: earlycon: use console_is_registered()
      tty: nfcon: use console_is_registered()
      serial_core: replace uart_console_enabled() with uart_console_registered()
      ...
    98d0052d
test_printf.c 18.8 KB