linux/drivers/tty
Liang Li 384e301e35 pch_uart: fix a deadlock when pch_uart as console
When we use pch_uart as system console like 'console=ttyPCH0,115200',
then 'send break' to it. We'll encounter the deadlock on a cpu/core,
with interrupts disabled on the core. When we happen to have all irqs
affinity to cpu0 then the deadlock on cpu0 actually deadlock whole
system.

In pch_uart_interrupt, we have spin_lock_irqsave(&priv->lock, flags)
then call pch_uart_err_ir when break is received. Then the call to
dev_err would actually call to pch_console_write then we'll run into
another spin_lock(&priv->lock), with interrupts disabled.

So in the call sequence lead by pch_uart_interrupt, we should be
carefully to call functions that will 'print message to console' only
in case the uart port is not being used as serial console.

Signed-off-by: Liang Li <liang.li@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-20 16:03:20 -08:00
..
hvc tty: Added a CONFIG_TTY option to allow removal of TTY 2013-01-18 16:15:27 -08:00
ipwireless TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
serial pch_uart: fix a deadlock when pch_uart as console 2013-01-20 16:03:20 -08:00
vt TTY: switch tty_schedule_flip 2013-01-15 22:43:15 -08:00
amiserial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
bfin_jtag_comm.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
cyclades.c cyclades: push down tty_port_tty_get 2013-01-15 22:43:15 -08:00
ehv_bytechan.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
isicom.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
Kconfig tty: Added a CONFIG_TTY option to allow removal of TTY 2013-01-18 16:15:27 -08:00
Makefile tty: Added a CONFIG_TTY option to allow removal of TTY 2013-01-18 16:15:27 -08:00
moxa.c TTY: switch tty_schedule_flip 2013-01-15 22:43:15 -08:00
moxa.h
mxser.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
mxser.h
n_gsm.c Revert "n_gsm.c: add tx_lock in gsm_send" 2013-01-15 22:48:15 -08:00
n_hdlc.c
n_r3964.c tty: localise the lock 2012-08-10 12:55:47 -07:00
n_tracerouter.c
n_tracesink.c
n_tracesink.h
n_tty.c tty: add missing newlines to WARN_RATELIMIT 2012-10-25 11:30:27 -07:00
nozomi.c TTY: nozomi, remove dead code 2013-01-15 22:43:16 -08:00
pty.c TTY: do not reset master's packet mode 2013-01-15 22:49:36 -08:00
rocket_int.h
rocket.c tty: rocket: Explicitly list supported PCI IDs 2013-01-17 17:28:39 -08:00
rocket.h
synclink_gt.c TTY: synclink, remove unneeded tests 2013-01-15 22:43:15 -08:00
synclink.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
synclinkmp.c TTY: synclink, remove unneeded tests 2013-01-15 22:43:15 -08:00
sysrq.c mm, oom: ensure sysrq+f always passes valid zonelist 2012-11-15 17:13:48 -08:00
tty_audit.c TTY: audit, stop accessing tty->icount 2012-10-22 16:50:54 -07:00
tty_buffer.c tty: Correct tty buffer flush. 2013-01-20 15:50:36 -08:00
tty_io.c tty: Fix comments that reference BKL, eventd, old paths 2013-01-15 21:57:44 -08:00
tty_ioctl.c tty: Add driver unthrottle in ioctl(...,TCFLSH,..). 2013-01-18 16:07:34 -08:00
tty_ldisc.c tty: don't deadlock while flushing workqueue 2013-01-15 23:07:15 -08:00
tty_mutex.c tty: tty_mutex.c: Fixed coding style warning (using printk) 2012-10-24 11:34:51 -07:00
tty_port.c TTY: introduce tty_port_destroy 2012-11-15 17:20:58 -08:00