aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2006-04-30 06:30:15 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-04-30 06:30:15 -0400
commita88d75b257b2b28b26d7d4d2b640f05feb00ad53 (patch)
tree559fff21b74d16d946b33333396dcd435da2e1b4
parentb32b19b8ffc05cbd3bf91c65e205f6a912ca15d9 (diff)
[SERIAL] Remove unconditional enable of TX irq for console
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>
-rw-r--r--drivers/serial/8250.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 9cc74712795d..e001ea0606ec 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -2256,8 +2256,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
2256 * and restore the IER 2256 * and restore the IER
2257 */ 2257 */
2258 wait_for_xmitr(up, BOTH_EMPTY); 2258 wait_for_xmitr(up, BOTH_EMPTY);
2259 up->ier |= UART_IER_THRI; 2259 serial_out(up, UART_IER, ier);
2260 serial_out(up, UART_IER, ier | UART_IER_THRI);
2261} 2260}
2262 2261
2263static int serial8250_console_setup(struct console *co, char *options) 2262static int serial8250_console_setup(struct console *co, char *options)