Mauro Carvalho Chehab
b6adea334c
8250: fix boot hang with serial console when using with Serial Over Lan port
...
Intel 8257x Ethernet boards have a feature called Serial Over Lan.
This feature works by emulating a serial port, and it is detected by
kernel as a normal 8250 port. However, this emulation is not perfect, as
also noticed on changeset 7500b1f602 .
Before this patch, the kernel were trying to check if the serial TX is
capable of work using IRQ's.
This were done with a code similar this:
serial_outp(up, UART_IER, UART_IER_THRI);
lsr = serial_in(up, UART_LSR);
iir = serial_in(up, UART_IIR);
serial_outp(up, UART_IER, 0);
if (lsr & UART_LSR_TEMT && iir & UART_IIR_NO_INT)
up->bugs |= UART_BUG_TXEN;
This works fine for other 8250 ports, but, on 8250-emulated SoL port, the
chip is a little lazy to down UART_IIR_NO_INT at UART_IIR register.
Due to that, UART_BUG_TXEN is sometimes enabled. However, as TX IRQ keeps
working, and the TX polling is now enabled, the driver miss-interprets the
IRQ received later, hanging up the machine until a key is pressed at the
serial console.
This is the 6 version of this patch. Previous versions were trying to
introduce a large enough delay between serial_outp and serial_in(up,
UART_IIR), but not taking forever. However, the needed delay couldn't be
safely determined.
At the experimental tests, a delay of 1us solves most of the cases, but
still hangs sometimes. Increasing the delay to 5us was better, but still
doesn't solve. A very high delay of 50 ms seemed to work every time.
However, poking around with delays and pray for it to be enough doesn't
seem to be a good approach, even for a quirk.
So, instead of playing with random large arbitrary delays, let's just
disable UART_BUG_TXEN for all SoL ports.
[[email protected] : fix warnings]
Signed-off-by: Mauro Carvalho Chehab <[email protected] >
Cc: Alan Cox <[email protected] >
Cc: <[email protected] >
Signed-off-by: Andrew Morton <[email protected] >
Signed-off-by: Linus Torvalds <[email protected] >
2009-02-20 17:57:50 -08:00
..
cpm_uart
Merge branch 'genirq-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-10-20 13:23:01 -07:00
jsm
jsm: additional device support
2009-02-18 15:37:55 -08:00
8250.c
8250: fix boot hang with serial console when using with Serial Over Lan port
2009-02-20 17:57:50 -08:00
8250.h
8250: improve workaround for UARTs that don't re-assert THRE correctly
2008-09-02 19:21:38 -07:00
8250_accent.c
8250_acorn.c
8250_boca.c
8250_early.c
8250_exar_st16c554.c
8250_fourport.c
8250_gsc.c
make probe_serial_gsc() static
2008-10-20 08:52:36 -07:00
8250_hp300.c
8250_hub6.c
8250_mca.c
8250_pci.c
8250: fix boot hang with serial console when using with Serial Over Lan port
2009-02-20 17:57:50 -08:00
8250_pnp.c
serial: Add SupraExpress 336i PnP Voice Modem
2009-01-15 12:48:36 -08:00
21285.c
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
2008-08-07 09:55:48 +01:00
68328serial.c
serial, 8250: remove NR_IRQ usage
2008-10-16 16:52:02 +02:00
68328serial.h
68360serial.c
Fix compile errors in SGI console drivers (linux-next tree)
2008-07-20 17:12:36 -07:00
amba-pl010.c
[ARM] amba drivers: don't pass a consumer clock name for devices with unique clocks
2008-11-30 17:38:14 +00:00
amba-pl011.c
[ARM] amba drivers: don't pass a consumer clock name for devices with unique clocks
2008-11-30 17:38:14 +00:00
atmel_serial.c
atmel_serial might lose modem status change
2009-02-18 15:37:55 -08:00
bfin_5xx.c
Blackfin Serial Driver: Remove BI status for known_good_char
2009-01-02 10:19:35 -08:00
bfin_sport_uart.c
__FUNCTION__ is gcc-specific, use __func__
2009-01-02 10:19:42 -08:00
bfin_sport_uart.h
clps711x.c
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
2008-08-07 09:55:48 +01:00
crisv10.c
trivial: fix then -> than typos in comments and documentation
2009-01-06 11:28:06 +01:00
crisv10.h
[CRIS] Move header files from include to arch/cris/include.
2008-10-29 17:29:44 +01:00
dz.c
serial: DZ11: avoid a hang at console switch-over
2008-07-24 10:47:29 -07:00
dz.h
icom.c
ttydev: Fix up compile failures in the PPC build
2008-07-22 13:03:22 -07:00
icom.h
imx.c
[ARM] MXC: remove dependency to other include files from irqs.h
2008-12-18 16:40:11 +01:00
ioc3_serial.c
[IA64] Fix section mismatch ioc3uart_init()/ioc3uart_submodule
2008-12-09 10:08:51 -08:00
ioc4_serial.c
Fix compile errors in SGI console drivers (linux-next tree)
2008-07-20 17:12:36 -07:00
ip22zilog.c
Fix compile errors in SGI console drivers (linux-next tree)
2008-07-20 17:12:36 -07:00
ip22zilog.h
Kconfig
MIPS: enable serial UART support on PNX833X devices.
2009-01-27 07:37:15 -08:00
kgdboc.c
m32r_sio.c
drivers/serial: use nr_irqs
2008-10-16 16:52:06 +02:00
m32r_sio.h
m32r_sio_reg.h
Makefile
serial: Add driver for the Cell Network Processor serial port NWP device
2009-01-08 16:25:18 +11:00
mcf.c
m68knommu: fix ColdFire 5272 serial baud rates in mcf.c
2009-01-27 16:42:00 +10:00
mpc52xx_uart.c
powerpc/mpc5200: fix error paths in PSC UART probe function
2008-12-21 02:54:32 -07:00
mpsc.c
kgdb: kgdboc console poll hooks for mpsc uart
2008-07-23 11:30:16 -05:00
mux.c
Fix compile errors in SGI console drivers (linux-next tree)
2008-07-20 17:12:36 -07:00
netx-serial.c
[ARM] build fixes for netX serial driver
2008-10-30 09:41:59 +01:00
nwpserial.c
serial: Add driver for the Cell Network Processor serial port NWP device
2009-01-08 16:25:18 +11:00
of_serial.c
serial: Add 16850 uart type support to OF uart driver
2009-01-16 16:15:17 +11:00
pmac_zilog.c
serial/pmac_zilog: Add console polling support
2008-11-19 16:04:23 +11:00
pmac_zilog.h
pnx8xxx_uart.c
When a break signal is detected, the next character should be ignored.
2009-01-15 12:48:36 -08:00
pxa.c
Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel
2008-12-02 22:07:40 +00:00
s3c24a0.c
[ARM] S3C24A0: Serial port definitions and driver support.
2008-12-15 21:46:36 +00:00
s3c2400.c
[ARM] S3C24XX: Move files out of include/asm-arm/plat-s3c*
2008-10-07 22:26:09 +01:00
s3c2410.c
[ARM] S3C24XX: Move files out of include/asm-arm/plat-s3c*
2008-10-07 22:26:09 +01:00
s3c2412.c
[ARM] S3C24XX: Move files out of include/asm-arm/plat-s3c*
2008-10-07 22:26:09 +01:00
s3c2440.c
drivers/serial/s3c2440.c: fix typo in MODULE_LICENSE
2008-12-10 08:01:53 -08:00
s3c6400.c
[ARM] S3C6400: serial support for S3C6400 and S3C6410 SoCs
2008-12-15 21:58:11 +00:00
sa1100.c
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
2008-08-07 09:55:48 +01:00
samsung.c
[ARM] S3C: Remove cpufreq warnings for unset serial information
2008-12-18 16:35:56 +00:00
samsung.h
[ARM] S3C: Update serial driver IRQ handling
2008-12-15 23:02:39 +00:00
sb1250-duart.c
Fix compile errors in SGI console drivers (linux-next tree)
2008-07-20 17:12:36 -07:00
sc26xx.c
Fix compile errors in SGI console drivers (linux-next tree)
2008-07-20 17:12:36 -07:00
serial_core.c
serial: struct device - replace bus_id with dev_name(), dev_set_name()
2009-01-06 10:44:37 -08:00
serial_cs.c
pcmcia: remove unused argument to pcmcia_parse_tuple()
2008-08-31 15:50:33 +02:00
serial_ks8695.c
[ARM] 5250/1: unbalanced enable_irq() for serial_ks8695.c fix
2008-10-01 22:41:43 +01:00
serial_lh7a40x.c
[ARM] lh7a40x: avoid polluting the kernel's namespace
2008-11-28 16:39:04 +00:00
serial_txx9.c
serial_txx9: use %lx for iobase
2008-10-20 08:50:24 -07:00
sh-sci.c
serial: sh-sci: Fix up port pinmux for SH7366.
2008-12-22 18:44:49 +09:00
sh-sci.h
sh: fix sh-sci / early printk build on sh7723
2009-01-21 17:44:32 +09:00
sn_console.c
Altix serial: fix
2008-10-20 08:52:36 -07:00
suncore.c
suncore.h
sunhv.c
sparc: Annotate of_device_id arrays with const or __initdata.
2008-08-31 01:23:17 -07:00
sunsab.c
sparc: Annotate of_device_id arrays with const or __initdata.
2008-08-31 01:23:17 -07:00
sunsab.h
sunsu.c
sparc: Annotate of_device_id arrays with const or __initdata.
2008-08-31 01:23:17 -07:00
sunzilog.c
sparc: Annotate of_device_id arrays with const or __initdata.
2008-08-31 01:23:17 -07:00
sunzilog.h
uartlite.c
powerpc/virtex: fix various format/casting printk mismatches
2008-11-14 09:59:48 -07:00
ucc_uart.c
Merge branch 'genirq-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-10-20 13:23:01 -07:00
vr41xx_siu.c
Fix compile errors in SGI console drivers (linux-next tree)
2008-07-20 17:12:36 -07:00
zs.c
serial: Z85C30: avoid a hang at console switch-over
2008-07-24 10:47:29 -07:00
zs.h