linux/drivers/tty/serial
Stephen Chivers 7fa21dd8bd printk/of_serial: fix serial console cessation part way through boot.
Commit 5f5c9ae56c
"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: Stephen Chivers <schivers@csc.com>
Tested-by: Stephen 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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-05-28 13:07:27 -07:00
..
8250 serial: 8250_dma: check the result of TX buffer mapping 2014-05-28 13:07:27 -07:00
cpm_uart tty: delete non-required instances of include <linux/init.h> 2014-01-07 17:05:21 -08:00
jsm
21285.c
68328serial.c
altera_jtaguart.c ARM: SoC DT updates for 3.12 2013-09-06 13:26:27 -07:00
altera_uart.c ARM: SoC DT updates for 3.12 2013-09-06 13:26:27 -07:00
amba-pl010.c serial: pl010: Convert to modern PM ops 2013-12-08 17:09:07 -08:00
amba-pl011.c tty/serial: pl011: add generic earlycon support 2014-04-24 16:32:27 -07:00
apbuart.c tty: serial: apbuart: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:33 -07:00
apbuart.h
ar933x_uart.c tty: ar933x_uart: add device tree support and binding documentation 2013-08-30 14:11:27 -07:00
arc_uart.c serial: arc_uart: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
atmel_serial.c tty/serial: at91: add interrupts for modem control lines 2014-05-28 12:51:18 -07:00
bcm63xx_uart.c tty: serial: bcm63xx_uart: add support for DT probing 2014-02-28 16:27:18 -08:00
bfin_sport_uart.c serial: bfin_sport_uart: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
bfin_sport_uart.h
bfin_uart.c tty: Remove unnecessary semicolons 2013-10-16 13:08:16 -07:00
clps711x.c Revert "serial: clps711x: Give a chance to perform useful tasks during wait loop" 2014-04-16 14:17:44 -07:00
crisv10.c tty: serial: crisv10: Drop remaining code for CRISv10 CPU simulator 2014-02-15 12:16:21 -08:00
crisv10.h
dz.c
dz.h
earlycon-arm-semihost.c tty/serial: add arm/arm64 semihosting earlycon 2014-04-24 16:32:27 -07:00
earlycon.c tty/serial: fix generic earlycon option parsing 2014-05-03 18:16:38 -04:00
efm32-uart.c serial: efm32: add module_exit 2014-05-28 12:30:48 -07:00
fsl_lpuart.c serial: fsl_lpuart: add DMA support 2014-02-18 12:50:26 -08:00
icom.c serial: icom: dereference after free in load_code() 2013-12-08 17:16:05 -08:00
icom.h
ifx6x60.c serial: ifx6x60: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
ifx6x60.h
imx.c serial: imx: disable the receiver ready interrupt for imx_stop_rx 2014-05-28 12:41:32 -07:00
ioc3_serial.c
ioc4_serial.c serial: ioc4_serial: Staticize ioc4_serial_attach_one() 2013-08-12 11:35:32 -07:00
ip22zilog.c tty: Remove unnecessary semicolons 2013-10-16 13:08:16 -07:00
ip22zilog.h
Kconfig tty/serial: at91: use mctrl_gpio helpers 2014-05-28 12:49:44 -07:00
kgdb_nmi.c tty: delete non-required instances of include <linux/init.h> 2014-01-07 17:05:21 -08:00
kgdboc.c treewide: Convert retrun typos to return 2013-09-04 12:26:36 +02:00
lantiq.c serial: MIPS: lantiq: fix clock error check 2013-08-12 11:37:48 -07:00
lpc32xx_hs.c tty: serial: lpc32xx_hs: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
m32r_sio_reg.h
m32r_sio.c tty: serial: m32r_sio: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
m32r_sio.h
Makefile tty/serial: Add GPIOLIB helpers for controlling modem lines 2014-05-28 12:49:14 -07:00
max310x.c serial: max310x: Add missing #include <linux/uaccess.h> 2014-03-17 16:13:23 -07:00
max3100.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
mcf.c tty: serial: mcf: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
men_z135_uart.c tty: serial: men_z135_uart: Don't activate TX Space available IRQ on startup 2014-05-28 12:27:22 -07:00
mfd.c serial: mfd: Staticize local symbols 2013-10-29 16:34:11 -07:00
mpc52xx_uart.c serial: mpc512x: setup the PSC FIFO clock as well 2014-01-12 18:53:05 +01:00
mpsc.c serial: mpsc: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
mrst_max3110.c mrst_max3110: fix unbalanced IRQ issue during resume 2013-10-29 16:26:54 -07:00
mrst_max3110.h
msm_serial_hs.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
msm_serial.c msm_serial: Add support for poll_{get,put}_char() 2014-02-12 11:34:23 -08:00
msm_serial.h msm_serial: Add support for poll_{get,put}_char() 2014-02-12 11:34:23 -08:00
msm_smd_tty.c
mux.c tty: serial: replace del_timer by del_timer_sync 2014-04-24 16:13:01 -07:00
mxs-auart.c tty: serial: mxs-auart: Check the return value from clk_prepare_enable() 2013-12-08 17:14:58 -08:00
netx-serial.c tty: serial: netx: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
nwpserial.c tty: serial: nwpserial: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:35 -07:00
of_serial.c printk/of_serial: fix serial console cessation part way through boot. 2014-05-28 13:07:27 -07:00
omap-serial.c tty: serial: omap: fix Sparse warnings 2014-04-24 16:19:02 -07:00
pch_uart.c serial_core: Commonalize crlf when working w/ a non open console port 2014-04-24 16:13:01 -07:00
pmac_zilog.c TTY: pmac_zilog, check existence of ports in pmz_console_init() 2013-11-25 08:54:25 -08:00
pmac_zilog.h
pnx8xxx_uart.c tty: serial: pnx8xxx: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:35 -07:00
pxa.c serial_core: Commonalize crlf when working w/ a non open console port 2014-04-24 16:13:01 -07:00
rp2.c tty: remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-08 17:09:07 -08:00
sa1100.c serial: sa1100: delete .set_wake callback 2013-10-16 13:16:18 -07:00
samsung.c serial: samsung: Neaten dbg uses 2014-05-28 12:27:22 -07:00
samsung.h serial: samsung: Neaten dbg uses 2014-05-28 12:27:22 -07:00
sb1250-duart.c
sc16is7xx.c serial: sc16is7xx: dynamically allocate tx/rx buffer 2014-05-28 12:22:42 -07:00
sccnxp.c serial: sccnxp: Add IGNPAR flag handling 2014-05-28 12:41:58 -07:00
serial_core.c serial: uart: add hw flow control support configuration 2014-05-28 13:04:46 -07:00
serial_ks8695.c
serial_mctrl_gpio.c tty/serial: Add GPIOLIB helpers for controlling modem lines 2014-05-28 12:49:14 -07:00
serial_mctrl_gpio.h tty/serial: Add GPIOLIB helpers for controlling modem lines 2014-05-28 12:49:14 -07:00
serial_txx9.c serial_core: Commonalize crlf when working w/ a non open console port 2014-04-24 16:13:01 -07:00
serial-tegra.c serial: tegra: convert to standard DMA DT bindings 2013-12-11 16:44:35 -07:00
sh-sci.c Revert "serial: sh-sci: Add device tree support for r8a7779" 2014-04-24 19:26:16 -07:00
sh-sci.h serial: sh-sci: Move overrun_bit and error_mask fields out of pdata 2013-12-24 11:17:48 +09:00
sirfsoc_uart.c serial: sirf: fix spinlock deadlock issue 2014-05-28 12:22:43 -07:00
sirfsoc_uart.h serial: sirf: fix spinlock deadlock issue 2014-05-28 12:22:43 -07:00
sn_console.c
st-asc.c serial: st-asc: Fix data corruption during long console bursts 2014-05-28 12:24:31 -07:00
suncore.c
sunhv.c sparc: serial: Clean up the locking for -rt 2014-03-06 16:32:25 -05:00
sunsab.c sparc: serial: Clean up the locking for -rt 2014-03-06 16:32:25 -05:00
sunsab.h
sunsu.c sparc: serial: Clean up the locking for -rt 2014-03-06 16:32:25 -05:00
sunzilog.c sparc: serial: Clean up the locking for -rt 2014-03-06 16:32:25 -05:00
sunzilog.h
tilegx.c tilegx: Add tty serial support for TILE-Gx on-chip UART 2013-09-03 14:50:40 -04:00
timbuart.c serial: timbuart: Staticize local symbols 2013-08-12 11:35:31 -07:00
timbuart.h
uartlite.c tty: serial: uartlite: Specify time for sending chars 2014-05-28 12:24:31 -07:00
ucc_uart.c DeviceTree updates for 3.13. This is a bit larger pull request than 2013-11-12 16:52:17 +09:00
vr41xx_siu.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
vt8500_serial.c serial: vt8500: add missing braces 2013-10-16 13:22:16 -07:00
xilinx_uartps.c tty: xuartps: Rebrand driver as Cadence UART 2014-04-24 16:21:51 -07:00
zs.c
zs.h