kernel-fxtec-pro1x/drivers
Alex Williamson 40b36daad0 [PATCH] 8250 UART backup timer
The patch below works around a minor bug found in the UART of the remote
management card used in many HP ia64 and parisc servers (aka the Diva
UARTs).  The problem is that the UART does not reassert the THRE interrupt
if it has been previously cleared and the IIR THRI bit is re-enabled.  This
can produce a very annoying failure mode when used as a serial console,
allowing a boot/reboot to hang indefinitely until an RX interrupt kicks it
into working again (ie.  an unattended reboot could stall).

To solve this problem, a backup timer is introduced that runs alongside the
standard interrupt driven mechanism.  This timer wakes up periodically,
checks for a hang condition and gets characters moving again.  This backup
mechanism is only enabled if the UART is detected as having this problem,
so systems without these UARTs will have no additional overhead.

This version of the patch incorporates previous comments from Pavel and
removes races in the bug detection code.  The test is now done before the
irq linking to prevent races with interrupt handler clearing the THRE
interrupt.  Short delays and syncs are also added to ensure the device is
able to update register state before the result is tested.

Aristeu says:

  this was tested on the following HP machines and solved the problem:
  rx2600, rx2620, rx1600 and rx1620s.

hpa says:

  I have seen this same bug in soft UART IP from "a major vendor."

Signed-off-by: Alex Williamson <alex.williamson@hp.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Russell King <rmk@arm.linux.org.uk>
Acked-by: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-02-14 08:09:52 -08:00
..
acorn [PATCH] mark struct file_operations const 3 2007-02-12 09:48:45 -08:00
acpi i2c: Declare more i2c_adapter parent devices 2007-02-13 22:09:03 +01:00
amba
ata [POWERPC] Fixup mp5200 drivers to match device tree changes 2007-02-13 15:35:53 +11:00
atm [PATCH] Get rid of "double zeroing" of allocated pages 2007-02-11 10:51:31 -08:00
auxdisplay [PATCH] drivers: add LCD support 2007-02-11 10:51:24 -08:00
base [PATCH] Drop __get_zone_counts() 2007-02-11 10:51:18 -08:00
block [PATCH] mark struct file_operations const 3 2007-02-12 09:48:45 -08:00
bluetooth [PATCH] mark struct file_operations const 3 2007-02-12 09:48:45 -08:00
cdrom [PATCH] mark struct file_operations const 3 2007-02-12 09:48:45 -08:00
char Merge master.kernel.org:/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 2007-02-13 16:10:08 -08:00
clocksource
connector
cpufreq
crypto
dio
dma
edac [PATCH] EDAC: Add Fully-Buffered DIMM APIs to core 2007-02-12 09:48:32 -08:00
eisa
fc4
firmware [PATCH] docbook: add edd firmware interfaces 2007-02-11 10:51:32 -08:00
hid
hwmon i2c/vt8231: Remove superfluous initialization 2007-02-13 22:08:58 +01:00
i2c i2c: Remove the warning on missing adapter device 2007-02-13 22:09:04 +01:00
ide [PATCH] mark struct file_operations const 3 2007-02-12 09:48:45 -08:00
ieee1394 i2c: Declare more i2c_adapter parent devices 2007-02-13 22:09:03 +01:00
infiniband Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband 2007-02-13 21:16:39 -08:00
input [PATCH] mark struct file_operations const 3 2007-02-12 09:48:45 -08:00
isdn [PATCH] mark struct file_operations const 3 2007-02-12 09:48:45 -08:00
kvm [PATCH] KVM: Host suspend/resume support 2007-02-12 09:48:41 -08:00
leds
macintosh [POWERPC] Correct AC Power: in /proc/pmu/info on ibook1 2007-02-13 15:35:52 +11:00
mca
md [PATCH] mark struct file_operations const 4 2007-02-12 09:48:45 -08:00
media i2c: Declare more i2c_adapter parent devices 2007-02-13 22:09:03 +01:00
message [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
mfd
misc [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
mmc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc 2007-02-11 11:39:00 -08:00
mtd [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
net [TG3]: Update copyright, version, and reldate. 2007-02-13 12:18:46 -08:00
nubus
oprofile [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
parisc [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
parport
pci [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
pcmcia [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
pnp [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
ps3 [PATCH] ps3: disable display flipping during mode changes 2007-02-12 09:48:44 -08:00
rapidio [PATCH] rapidio: fix multi-switch enumeration 2007-02-11 11:18:07 -08:00
rtc i2c: Stop using i2c_adapter.class_dev 2007-02-13 22:09:04 +01:00
s390 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2007-02-12 09:57:44 -08:00
sbus [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
scsi [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
serial [PATCH] 8250 UART backup timer 2007-02-14 08:09:52 -08:00
sh
sn [PATCH] IOC3/IOC4: PCI mem space resources 2007-02-11 10:51:25 -08:00
spi [PATCH] SPI eeprom driver 2007-02-12 09:48:31 -08:00
tc [PATCH] Char: tty_wakeup cleanup 2007-02-11 10:51:26 -08:00
telephony [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
usb [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
video i2c: Declare more i2c_adapter parent devices 2007-02-13 22:09:03 +01:00
w1 [PATCH] w1: Use ARRAY_SIZE macro when appropriate 2007-02-12 09:48:28 -08:00
zorro [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
Kconfig [PATCH] drivers: add LCD support 2007-02-11 10:51:24 -08:00
Makefile [PATCH] drivers: add LCD support 2007-02-11 10:51:24 -08:00