Re: Linux 2.4.28-rc1

From: Marcelo Tosatti
Date: Sat Oct 23 2004 - 09:07:36 EST


On Sat, Oct 23, 2004 at 08:30:20AM -0500, Paul Fulghum wrote:
> On Fri, 2004-10-22 at 13:59, Marcelo Tosatti wrote:
> > Here goes the first release candidate of v2.4.28.
>
> Any chance of getting this in?

Oh I missed that, sorry (I've seen it and thought I had
applied).

Well, there it is.

>
> --
> Paul Fulghum
> paulkf@xxxxxxxxxxxxx
>
> >From paulkf@xxxxxxxxxxxxx Fri Oct 8 13:20:56 2004
> Subject: [PATCH] serial receive lockup fix
> From: Paul Fulghum <paulkf@xxxxxxxxxxxxx>
> To: Marcelo Tosatti <marcelo.tosatti@xxxxxxxxxxxx>
> Cc: linux-kernel <linux-kernel@xxxxxxxxxxxxxxx>
>
> Fix lockup caused by serial driver not clearing
> receive interrupt if flip buffer becomes full.
>
> Signed-off-by: Paul Fulghum <paulkf@xxxxxxxxxxxxx>
>
>
>
> --- a/drivers/char/serial.c 2004-09-29 09:08:35.000000000 -0500
> +++ b/drivers/char/serial.c 2004-09-29 09:09:07.000000000 -0500
> @@ -573,8 +573,19 @@
> do {
> if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
> tty->flip.tqueue.routine((void *) tty);
> - if (tty->flip.count >= TTY_FLIPBUF_SIZE)
> + if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
> + /* no room in flip buffer, discard rx FIFO contents to clear IRQ
> + * *FIXME* Hardware with auto flow control
> + * would benefit from leaving the data in the FIFO and
> + * disabling the rx IRQ until space becomes available.
> + */
> + do {
> + serial_inp(info, UART_RX);
> + icount->overrun++;
> + *status = serial_inp(info, UART_LSR);
> + } while ((*status & UART_LSR_DR) && (max_count-- > 0));
> return; // if TTY_DONT_FLIP is set
> + }
> }
> ch = serial_inp(info, UART_RX);
> *tty->flip.char_buf_ptr = ch;
>
>
-
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/