• Kevin Cernekee's avatar
    printk: fix delayed messages from CPU hotplug events · 034260d6
    Kevin Cernekee authored
    When a secondary CPU is being brought up, it is not uncommon for
    printk() to be invoked when cpu_online(smp_processor_id()) == 0.  The
    case that I witnessed personally was on MIPS:
    
    http://lkml.org/lkml/2010/5/30/4
    
    If (can_use_console() == 0), printk() will spool its output to log_buf
    and it will be visible in "dmesg", but that output will NOT be echoed to
    the console until somebody calls release_console_sem() from a CPU that
    is online.  Therefore, the boot time messages from the new CPU can get
    stuck in "limbo" for a long time, and might suddenly appear on the
    screen when a completely unrelated event (e.g. "eth0: link is down")
    occurs.
    
    This patch modifies the console code so that any pending messages are
    automatically flushed out to the console whenever a CPU hotplug
    operation completes successfully or aborts.
    
    The issue was seen on 2.6.34.
    
    Original patch by Kevin Cernekee with cleanups by akpm and additional fixes
    by Santosh Shilimkar.  This patch superseeds
    https://patchwork.linux-mips.org/patch/1357/.
    Signed-off-by: default avatarKevin Cernekee <cernekee@gmail.com>
    To: <mingo@elte.hu>
    To: <akpm@linux-foundation.org>
    To: <simon.kagstrom@netinsight.net>
    To: <David.Woodhouse@intel.com>
    To: <lethal@linux-sh.org>
    Cc: <linux-kernel@vger.kernel.org>
    Cc: <linux-mips@linux-mips.org>
    Reviewed-by: default avatarPaul Mundt <lethal@linux-sh.org>
    Signed-off-by: default avatarKevin Cernekee <cernekee@gmail.com>
    Patchwork: https://patchwork.linux-mips.org/patch/1534/
    LKML-Reference: <ede63b5a20af951c755736f035d1e787772d7c28@localhost>
    LKML-Reference: <EAF47CD23C76F840A9E7FCE10091EFAB02C5DB6D1F@dbde02.ent.ti.com>
    Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    034260d6
printk.c 39 KB