]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[SERIAL] Remove unconditional enable of TX irq for console
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Sun, 30 Apr 2006 10:30:15 +0000 (11:30 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 30 Apr 2006 10:30:15 +0000 (11:30 +0100)
A bug report from Gerd Hoffmann has highlighted that unconditionally
enabling the transmit interrupt at the end of console writes is very
bad.

In Gerd's case, it causes the test for buggy UARTs to give false
positives, incorrectly identifying ports as buggy when they are not.

Moreover, if we unconditionally enable the interrupt, and the port
is sharing it's interrupt with other ports, there is the very real
possibility that we'll cause an interrupt storm.  (Not all ports use
OUT2 as an interrupt mask.)

Hence, revert part of f91a3715db2bb44fcf08cec642e68f919b70f7f4 and
all of f5968b37b3ad35b682b574b578843a0361218aff until a better solution
can be found.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/serial/8250.c

index 9cc74712795d1527db48e606da2a28b2dd3137ce..e001ea0606ec86ec86718de00cdb167f3ad92f5e 100644 (file)
@@ -2256,8 +2256,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
         *      and restore the IER
         */
        wait_for_xmitr(up, BOTH_EMPTY);
-       up->ier |= UART_IER_THRI;
-       serial_out(up, UART_IER, ier | UART_IER_THRI);
+       serial_out(up, UART_IER, ier);
 }
 
 static int serial8250_console_setup(struct console *co, char *options)