Commit cc20b900be7aa8e456aff82dfcb55fb15c508962

Authored by Simon Kagstrom
Committed by Russell King
1 parent 4c9f8be7da

ARM: 5874/1: serial21285: fix disable_irq-from-interrupt-handler deadlock

The console hangs during bootup when disable_irq is called from the
transmit interrupt handler (it will wait forever for it's "own"
interrupt in synchronize_irq). Fix by using disable_irq_nosync()
instead.

Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

Showing 1 changed file with 2 additions and 2 deletions Side-by-side Diff

drivers/serial/21285.c
... ... @@ -58,7 +58,7 @@
58 58 static void serial21285_stop_tx(struct uart_port *port)
59 59 {
60 60 if (tx_enabled(port)) {
61   - disable_irq(IRQ_CONTX);
  61 + disable_irq_nosync(IRQ_CONTX);
62 62 tx_enabled(port) = 0;
63 63 }
64 64 }
... ... @@ -74,7 +74,7 @@
74 74 static void serial21285_stop_rx(struct uart_port *port)
75 75 {
76 76 if (rx_enabled(port)) {
77   - disable_irq(IRQ_CONRX);
  77 + disable_irq_nosync(IRQ_CONRX);
78 78 rx_enabled(port) = 0;
79 79 }
80 80 }