There's a short time when FIFO's are disabled and interrupts enabled between startup and set_termios. If rx FIFO is not cleared before enabled, and there are lots of serial I/O, an interrupt indicating FIFO data error can occur. (LSR register bit 7 set, no other error bits set). The current interrupt handle is unable to clear this interrupt and will continue looping with a flood of "too much work" messages. This is seen on an omap board with ST16654 type uart if a key is kept pressed in serial console while booting. Signed-off-by: Mathias Nyman <mathias.nyman@xxxxxxxxx> --- drivers/serial/8250.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index 5ed1b82..d3add25 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c @@ -2403,6 +2403,8 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios, if (fcr & UART_FCR_ENABLE_FIFO) { /* emulated UARTs (Lucent Venus 167x) need two steps */ serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO); + serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO | + UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT); } serial_outp(up, UART_FCR, fcr); /* set fcr */ } -- 1.5.6.5 -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html