Serial is _slow_ sometimes. So slow, that the NMI watchdog kicks in.
I initially did the patch below a year ago for the Fedora kernel, and have
been keeping it up to date since. I recently got the same thing happening
on a vanilla kernel, so figured it was time to repost this.
Signed-off-by: Dave Jones <davej@xxxxxxxxxx>
--- linux-2.6/drivers/serial/8250.c~ 2005-05-14 02:49:02.000000000 -0400
+++ linux-2.6/drivers/serial/8250.c 2005-05-14 02:54:30.000000000 -0400
@@ -2098,9 +2098,11 @@ static inline void wait_for_xmitr(struct
/* Wait up to 1s for flow control if necessary */
if (up->port.flags & UPF_CONS_FLOW) {
tmout = 1000000;
- while (--tmout &&
- ((serial_in(up, UART_MSR) & UART_MSR_CTS) == 0))
+ while (!(serial_in(up, UART_MSR) & UART_MSR_CTS) && --tmout) {
udelay(1);
+ if ((tmout % 1000) == 0)
+ touch_nmi_watchdog();
+ }
}
}