RE: [BUG][2.6.8.1] serial driver hangs SMP kernel, but not the UP kernel

Tim_T_Murphy
2005-01-06T22:50:28Z

> anything i can do to avoid dropping characters without using
> low_latency, which still hangs SMP kernels?

this patch fixes the problem for me, but its probably an awful hack -- a
brief interrupt storm occurs until tty processes its buffer, but IMHO
that's better than dropping characters.

is there a better alternative?
thanks,
tim

--- 8250-orig.c 2005-01-06 16:25:24.000000000 -0600
+++ 8250.c 2005-01-06 16:27:21.000000000 -0600
@@ -989,8 +989,10 @@
if (unlikely(tty->flip.count >= TTY_FLIPBUF_SIZE)) {
if(tty->low_latency)
tty_flip_buffer_push(tty);
- /* If this failed then we will throw away the
- bytes but must do so to clear interrupts */
+ else
+ break;
+ /* If this failed then we will just leave now
+ rather than dropping bytes (interrupts not
cleared) */
}
ch = serial_inp(up, UART_RX);
flag = TTY_NORMAL;