• John Ogness's avatar
    printk: use the lockless ringbuffer · 896fbe20
    John Ogness authored
    Replace the existing ringbuffer usage and implementation with
    lockless ringbuffer usage. Even though the new ringbuffer does not
    require locking, all existing locking is left in place. Therefore,
    this change is purely replacing the underlining ringbuffer.
    
    Changes that exist due to the ringbuffer replacement:
    
    - The VMCOREINFO has been updated for the new structures.
    
    - Dictionary data is now stored in a separate data buffer from the
      human-readable messages. The dictionary data buffer is set to the
      same size as the message buffer. Therefore, the total required
      memory for both dictionary and message data is
      2 * (2 ^ CONFIG_LOG_BUF_SHIFT) for the initial static buffers and
      2 * log_buf_len (the kernel parameter) for the dynamic buffers.
    
    - Record meta-data is now stored in a separate array of descriptors.
      This is an additional 72 * (2 ^ (CONFIG_LOG_BUF_SHIFT - 5)) bytes
      for the static array and 72 * (log_buf_len >> 5) bytes for the
      dynamic array.
    Signed-off-by: default avatarJohn Ogness <john.ogness@linutronix.de>
    Reviewed-by: default avatarPetr Mladek <pmladek@suse.com>
    Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20200709132344.760-5-john.ogness@linutronix.de
    896fbe20
printk.c 87.9 KB