• John Ogness's avatar
    printk: fix setting first seq for consoles · a4242760
    John Ogness authored
    It used to be that all consoles were synchronized with respect to
    which message they were printing. After commit a699449b ("printk:
    refactor and rework printing logic"), all consoles have their own
    @seq for tracking which message they are on. That commit also changed
    how the initial sequence number was chosen. Instead of choosing the
    next non-printed message, it chose the sequence number of the next
    message that will be added to the ringbuffer.
    
    That change created a possibility that a non-boot console taking over
    for a boot console might skip messages if the boot console was behind
    and did not have a chance to catch up before being unregistered.
    
    Since it is not known which boot console is the same device, flush
    all consoles and, if necessary, start with the message of the enabled
    boot console that is the furthest behind. If no boot consoles are
    enabled, begin with the next message that will be added to the
    ringbuffer.
    
    Also, since boot consoles are meant to be used at boot time, handle
    them the same as CON_PRINTBUFFER to ensure that no initial messages
    are skipped.
    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/20221116162152.193147-7-john.ogness@linutronix.de
    a4242760
printk.c 104 KB