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

From: Tim_T_Murphy
Date: Thu Jan 06 2005 - 17:58:28 EST



> 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;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/