• Stephen Chivers's avatar
    printk/of_serial: fix serial console cessation part way through boot. · 7fa21dd8
    Stephen Chivers authored
    Commit 5f5c9ae5
    "serial_core: Unregister console in uart_remove_one_port()"
    fixed a crash where a serial port was removed but
    not deregistered as a console.
    
    There is a side effect of that commit for platforms having serial consoles
    and of_serial configured (CONFIG_SERIAL_OF_PLATFORM). The serial console
    is disabled midway through the boot process.
    
    This cessation of the serial console affects PowerPC computers
    such as the MVME5100 and SAM440EP.
    
    The sequence is:
    
    	bootconsole [udbg0] enabled
    	....
    	serial8250/16550 driver initialises and registers its UARTS,
    	one of these is the serial console.
    	console [ttyS0] enabled
    	....
    	of_serial probes "platform" devices, registering them as it goes.
    	One of these is the serial console.
    	console [ttyS0] disabled.
    
    The disabling of the serial console is due to:
    
    	a.  unregister_console in printk not clearing the
    	    CONS_ENABLED bit in the console flags,
    	    even though it has announced that the console is disabled; and
    
    	b.  of_platform_serial_probe in of_serial not setting the port type
    	    before it registers with serial8250_register_8250_port.
    
    This patch ensures that the serial console is re-enabled when of_serial
    registers a serial port that corresponds to the designated console.
    Signed-off-by: default avatarStephen Chivers <schivers@csc.com>
    Tested-by: default avatarStephen Chivers <schivers@csc.com>
    Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> [unregister_console]
    Cc: stable <stable@vger.kernel.org> # 3.15
    
    ===
    The above failure was identified in Linux-3.15-rc2.
    
    Tested using MVME5100 and SAM440EP PowerPC computers with
    kernels built from Linux-3.15-rc5 and tty-next.
    
    The continued operation of the serial console is vital for computers
    such as the MVME5100 as that Single Board Computer does not
    have any grapical/display hardware.
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    7fa21dd8
of_serial.c 7.01 KB