1
linux/arch/blackfin
Sonic Zhang 0f66e50af5 serial: bfin_5xx: split uart RX lock from uart port lock to avoid deadlock
The RX lock is used to protect the RX buffer from concurrent access in DMA
mode between the timer and RX interrupt routines.  It is independent from
the uart lock which is used to protect the TX buffer.  It is possible for
a uart TX transfer to be started up from the RX interrupt handler if low
latency is enabled.  So we need to split the locks to avoid deadlocking in
this situation.

In PIO mode, the RX lock is not necessary because the handle_simple_irq
and handle_level_irq functions ensure driver interrupt handlers are called
once on one core.

And now that the RX path has its own lock, the TX interrupt has nothing to
do with the RX path, so disabling it at the same time.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-02-03 14:44:54 -08:00
..
boot Blackfin: encode cpu-rev into uImage name 2011-01-10 07:18:27 -05:00
configs kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
include serial: bfin_5xx: split uart RX lock from uart port lock to avoid deadlock 2011-02-03 14:44:54 -08:00
kernel Blackfin: kgdb_test: make sure to initialize num2 2011-01-10 07:18:23 -05:00
lib Blackfin: optimize strncpy a bit 2010-05-22 14:19:11 -04:00
mach-bf518 Blackfin: boards: add missing "static" to peripheral lists 2011-01-10 07:18:25 -05:00
mach-bf527 Blackfin: boards: add missing "static" to peripheral lists 2011-01-10 07:18:25 -05:00
mach-bf533 Blackfin: boards: add missing "static" to peripheral lists 2011-01-10 07:18:25 -05:00
mach-bf537 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
mach-bf538 Blackfin: boards: add missing "static" to peripheral lists 2011-01-10 07:18:25 -05:00
mach-bf548 Blackfin: boards: add missing "static" to peripheral lists 2011-01-10 07:18:25 -05:00
mach-bf561 Blackfin: boards: add missing "static" to peripheral lists 2011-01-10 07:18:25 -05:00
mach-common Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
mm Blackfin: sram_free_with_lsl: do not ignore return value of sram_free 2011-01-10 07:18:26 -05:00
oprofile Blackfin arch: remove hardware PM code, oprofile not use it 2009-01-07 23:14:39 +08:00
ADI_BSD.txt Blackfin: mass clean up of copyright/licensing info 2009-10-07 04:36:26 -04:00
Kconfig blackfin: Use generic irq Kconfig 2011-01-21 11:55:31 +01:00
Kconfig.debug Blackfin: drop unused irq_panic()/DEBUG_ICACHE_CHECK 2010-10-25 17:24:00 -04:00
Makefile Blackfin: encode cpu-rev into uImage name 2011-01-10 07:18:27 -05:00