Messages in this thread | | | Date | Tue, 27 Jun 2006 12:15:17 -0700 | From | "H. Peter Anvin" <> | Subject | Re: [PATCH] 8250 UART backup timer |
| |
Alex Williamson wrote: > 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. > Comments? Thanks, >
I have seen this same bug in soft UART IP from "a major vendor."
-hpa - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |