• Tetsuo Handa's avatar
    printk: Add caller information to printk() output. · 15ff2069
    Tetsuo Handa authored
    Sometimes we want to print a series of printk() messages to consoles
    without being disturbed by concurrent printk() from interrupts and/or
    other threads. But we can't enforce printk() callers to use their local
    buffers because we need to ask them to make too much changes. Also, even
    buffering up to one line inside printk() might cause failing to emit
    an important clue under critical situation.
    
    Therefore, instead of trying to help buffering, let's try to help
    reconstructing messages by saving caller information as of calling
    log_store() and adding it as "[T$thread_id]" or "[C$processor_id]"
    upon printing to consoles.
    
    Some examples for console output:
    
      [    1.222773][    T1] x86: Booting SMP configuration:
      [    2.779635][    T1] pci 0000:00:01.0: PCI bridge to [bus 01]
      [    5.069193][  T268] Fusion MPT base driver 3.04.20
      [    9.316504][    C2] random: fast init done
      [   13.413336][ T3355] Initialized host personality
    
    Some examples for /dev/kmsg output:
    
      6,496,1222773,-,caller=T1;x86: Booting SMP configuration:
      6,968,2779635,-,caller=T1;pci 0000:00:01.0: PCI bridge to [bus 01]
       SUBSYSTEM=pci
       DEVICE=+pci:0000:00:01.0
      6,1353,5069193,-,caller=T268;Fusion MPT base driver 3.04.20
      5,1526,9316504,-,caller=C2;random: fast init done
      6,1575,13413336,-,caller=T3355;Initialized host personality
    
    Note that this patch changes max length of messages which can be printed
    by printk() or written to /dev/kmsg interface from 992 bytes to 976 bytes,
    based on an assumption that userspace won't try to write messages hitting
    that border line to /dev/kmsg interface.
    
    Link: http://lkml.kernel.org/r/93f19e57-5051-c67d-9af4-b17624062d44@i-love.sakura.ne.jp
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: LKML <linux-kernel@vger.kernel.org>
    Cc: syzkaller <syzkaller@googlegroups.com>
    Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Acked-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
    15ff2069
Kconfig.debug 68.8 KB