• Linus Torvalds's avatar
    Merge tag 'printk-for-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux · d594d8f4
    Linus Torvalds authored
    Pull printk updates from Petr Mladek:
     "The big new thing is the fully lockless ringbuffer implementation,
      including the support for continuous lines. It will allow to store and
      read messages in any situation wihtout the risk of deadlocks and
      without the need of temporary per-CPU buffers.
    
      The access is still serialized by logbuf_lock. It synchronizes few
      more operations, for example, temporary buffer for formatting the
      message, syslog and kmsg_dump operations. The lock removal is being
      discussed and should be ready for the next release.
    
      The continuous lines are handled exactly the same way as before to
      avoid regressions in user space. It means that they are appended to
      the last message when the caller is the same. Only the last message
      can be extended.
    
      The data ring includes plain text of the messages. Except for an
      integer at the beginning of each message that points back to the
      descriptor ring with other metadata.
    
      The dictionary has to stay. journalctl uses it to filter the log. It
      allows to show messages related to a given device. The dictionary
      values are stored in the descriptor ring with the other metadata.
    
      This is the first part of the printk rework as discussed at Plumbers
      2019, see https://lore.kernel.org/r/87k1acz5rx.fsf@linutronix.de. The
      next big step will be handling consoles by kthreads during the normal
      system operation. It will require special handling of situations when
      the kthreads could not get scheduled, for example, early boot,
      suspend, panic.
    
      Other changes:
    
       - Add John Ogness as a reviewer for printk subsystem. He is author of
         the rework and is familiar with the code and history.
    
       - Fix locking in serial8250_do_startup() to prevent lockdep report.
    
       - Few code cleanups"
    
    * tag 'printk-for-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux: (27 commits)
      printk: Use fallthrough pseudo-keyword
      printk: reduce setup_text_buf size to LOG_LINE_MAX
      printk: avoid and/or handle record truncation
      printk: remove dict ring
      printk: move dictionary keys to dev_printk_info
      printk: move printk_info into separate array
      printk: reimplement log_cont using record extension
      printk: ringbuffer: add finalization/extension support
      printk: ringbuffer: change representation of states
      printk: ringbuffer: clear initial reserved fields
      printk: ringbuffer: add BLK_DATALESS() macro
      printk: ringbuffer: relocate get_data()
      printk: ringbuffer: avoid memcpy() on state_var
      printk: ringbuffer: fix setting state in desc_read()
      kernel.h: Move oops_in_progress to printk.h
      scripts/gdb: update for lockless printk ringbuffer
      scripts/gdb: add utils.read_ulong()
      docs: vmcoreinfo: add lockless printk ringbuffer vmcoreinfo
      printk: reduce LOG_BUF_SHIFT range for H8300
      printk: ringbuffer: support dataless records
      ...
    d594d8f4
Kconfig 75.3 KB