1
linux/drivers/tty/serial
Chao Xie cfe275c2db serial: pxa: add spin lock for console write
v3:
Remove empty line

v2:
Move local_irq_save() after clk_prepare_enable()

v1:
At UP mode, when cpu want to print message in kernel, it will invoke
peempt_disable and disable irq. So it is safe for UP mode.
For SMP mode, it is not safe to protect the HW reigsters.
one CPU will run a program which will invoke printf.
another CPU will run a program in kernel that invoke printk.
So when second CPU is trying to printk, it will do
1. save ier register
2. enable uue bit of ier register
3. push buffer to uart fifo
4 .restore ier register
when first CPU want to printf, and it happens between 1 and 4, it will
enable thre bit of ier, and waiting for transmit intterupt. while step 4
will make the ier lost thre bit.
add spin lock here to protect the ier register for console write.

Signed-off-by: Chao Xie <chao.xie@marvell.com>
Signed-off-by: Haojian Zhuang <haojian.zhuang@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-15 15:04:49 -07:00
..
8250 8250_pci: Remove duplicate struct pciserial_board 2012-06-12 15:48:02 -07:00
cpm_uart
jsm jsm: Fixed EEH recovery error 2012-01-24 12:55:36 -08:00
21285.c Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
68328serial.c TTY: 68328serial, use tty_port_block_til_ready 2012-04-09 12:02:45 -07:00
altera_jtaguart.c Merge branch 'devicetree/next' of git://git.secretlab.ca/git/linux-2.6 2011-10-27 08:35:41 +02:00
altera_uart.c tty: serial: altera_uart: Check for NULL platform_data in probe. 2012-04-09 10:30:39 -07:00
amba-pl010.c serial: pl010: Enable module alias autogeneration for AMBA drivers 2011-11-22 10:58:32 +00:00
amba-pl011.c TTY pull request for 3.5-rc1 2012-05-22 16:12:24 -07:00
apbuart.c apbuart: fix section mismatch warning 2011-12-27 16:33:13 -05:00
apbuart.h
ar933x_uart.c SERIAL: AR933X: Add driver for the built-in UART of the SoC 2011-12-07 22:02:46 +00:00
atmel_serial.c tty/serial: atmel_serial: fix RS485 half-duplex problem 2012-04-09 10:30:39 -07:00
bcm63xx_uart.c
bfin_sport_uart.c serial: bfin-sport-uart: Add tty ASYNC_CTS_FLOW flag to do CTS flow control. 2011-12-09 19:05:33 -08:00
bfin_sport_uart.h tty: bfin-sport-uart: Rx interrupt is not called always with irq disabled. 2011-12-09 19:05:33 -08:00
bfin_uart.c serial: bfin_uart: Make MMR access compatible with 32 bits bf609 style controller. 2012-05-17 13:25:56 -07:00
clps711x.c ARM: clps711x: Using a single definition for the PHYS and VIRT registers offset 2012-05-11 16:18:01 +02:00
crisv10.c tty: Revert the tty locking series, it needs more work 2012-06-02 15:21:43 -07:00
crisv10.h
dz.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
dz.h
efm32-uart.c serial/efm32: add new driver 2012-01-26 11:29:47 -08:00
icom.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
icom.h
ifx6x60.c TTY: remove re-assignments to tty_driver members 2012-03-08 11:37:58 -08:00
ifx6x60.h
imx.c serial/imx: make devdata member point to const data 2012-06-12 15:40:08 -07:00
ioc3_serial.c
ioc4_serial.c TTY: remove serialP.h inclusion from some files 2012-03-08 11:47:02 -08:00
ip22zilog.c
ip22zilog.h
Kconfig serial: Add driver for LPC32xx High Speed UARTs 2012-06-12 15:48:01 -07:00
kgdboc.c tty: Add module.h to drivers/tty users who just expect it there. 2011-10-31 19:31:27 -04:00
lantiq.c SERIAL: MIPS: lantiq: implement OF support 2012-05-21 14:31:54 +01:00
lpc32xx_hs.c serial: Add driver for LPC32xx High Speed UARTs 2012-06-12 15:48:01 -07:00
m32r_sio_reg.h m32r: relocate drivers back out of 8250 dir 2012-02-08 15:04:32 -08:00
m32r_sio.c TTY: remove serialP.h inclusion from some files 2012-03-08 11:47:02 -08:00
m32r_sio.h TTY: serial, include pci.h in m32r_sio 2012-03-08 11:47:02 -08:00
Makefile serial: Add driver for LPC32xx High Speed UARTs 2012-06-12 15:48:01 -07:00
max3100.c TTY: Remove redundant spi driver bus initialization 2011-11-26 20:19:21 -08:00
max3107.c TTY: Remove redundant spi driver bus initialization 2011-11-26 20:19:21 -08:00
max3107.h
mcf.c TTY: irq: Remove IRQF_DISABLED 2011-09-22 16:08:57 -07:00
mfd.c simple_open: automatically convert to simple_open() 2012-04-05 15:25:50 -07:00
mpc52xx_uart.c mpc5200b/uart: select more tolerant uart prescaler on low baudrates 2012-03-08 13:15:50 -08:00
mpsc.c
mrst_max3110.c TTY: Remove redundant spi driver bus initialization 2011-11-26 20:19:21 -08:00
mrst_max3110.h
msm_serial_hs.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
msm_serial.c Merge branch 'next/dt' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 21:02:35 -07:00
msm_serial.h
msm_smd_tty.c TTY: remove re-assignments to tty_driver members 2012-03-08 11:37:58 -08:00
mux.c tty/serial/mux.c: linux/tty.h included twice 2012-02-24 13:50:45 -08:00
mxs-auart.c TTY pull request for 3.5-rc1 2012-05-22 16:12:24 -07:00
netx-serial.c
nwpserial.c tty: Add export.h for EXPORT_SYMBOL/THIS_MODULE to exporters 2011-10-31 19:31:28 -04:00
of_serial.c serial/of-serial: Add LPC3220 standard UART compatible string 2012-06-12 15:45:57 -07:00
omap-serial.c Merge 3.4-rc3 into tty-next 2012-04-18 15:57:31 -07:00
pch_uart.c Merge 3.4-rc4 into tty-next 2012-04-23 09:39:23 -07:00
pmac_zilog.c tty/serial/pmac_zilog: Fix "nobody cared" IRQ message 2012-04-30 10:59:58 +10:00
pmac_zilog.h tty/serial/pmac_zilog: Fix suspend & resume 2011-12-16 11:10:01 +11:00
pnx8xxx_uart.c
pxa.c serial: pxa: add spin lock for console write 2012-06-15 15:04:49 -07:00
sa1100.c ARM: 7342/2: sa1100: prepare for sparse irq conversion 2012-03-25 23:57:20 +01:00
samsung.c serial: samsung: protect NULL dereference of clock name 2012-06-12 15:32:18 -07:00
samsung.h serial: samsung: merge probe() function from all SoC specific extensions 2011-12-23 10:07:00 +09:00
sb1250-duart.c SERIAL: MIPS Swarm sb1250-duart.c driver needs module.h 2012-05-15 17:48:50 +02:00
sc26xx.c TTY: serial: convert drivers/tty/serial/* to use module_platform_driver() 2011-11-30 20:11:46 +09:00
serial_core.c serial_core: Update buffer overrun statistics. 2012-06-12 15:40:30 -07:00
serial_ks8695.c TTY: irq: Remove IRQF_DISABLED 2011-09-22 16:08:57 -07:00
serial_txx9.c
sh-sci.c serial: sh-sci: Make probe fail for ports that exceed the maximum count 2012-06-12 15:56:54 -07:00
sh-sci.h serial: sh-sci: use serial_port_in/out vs sci_in/out. 2012-03-30 19:50:15 +09:00
sirfsoc_uart.c pinctrl: API changes to support multiple states per device 2012-03-05 11:22:59 +01:00
sirfsoc_uart.h serial/sirf: fixup for changes to pin control 2012-02-22 17:59:12 +01:00
sn_console.c Miscellaneous Itanium patches 2012-03-23 17:19:37 -07:00
suncore.c tty: sparc: rename drivers/tty/serial/suncore.h -> include/linux/sunserialcore.h 2012-02-10 10:44:35 -08:00
sunhv.c Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
sunsab.c Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
sunsab.h
sunsu.c Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
sunzilog.c serial/sunzilog: fix keyboard on SUN SPARCstation 2012-04-04 00:37:10 -07:00
sunzilog.h
timbuart.c TTY: serial: convert drivers/tty/serial/* to use module_platform_driver() 2011-11-30 20:11:46 +09:00
timbuart.h
uartlite.c Merge branch 'devicetree/next' of git://git.secretlab.ca/git/linux-2.6 2011-10-27 08:35:41 +02:00
ucc_uart.c serial: Kill off NO_IRQ 2012-01-26 17:14:50 -08:00
vr41xx_siu.c serial: Kill off NO_IRQ 2012-01-26 17:14:50 -08:00
vt8500_serial.c tty: serial: vt8500: fix annotations for probe/remove 2012-03-12 10:21:55 -07:00
xilinx_uartps.c tty: Add module.h to drivers/tty users who just expect it there. 2011-10-31 19:31:27 -04:00
zs.c SERIAL: MIPS DECstation zs.c driver needs module.h 2012-05-15 17:48:50 +02:00
zs.h