Re: Serial driver hangs

From: Paul Fulghum
Date: Thu Sep 30 2004 - 16:27:05 EST


On Thu, 2004-09-30 at 15:10, Alan Cox wrote:
> On Iau, 2004-09-30 at 21:30, Paul Fulghum wrote:
> > tty->flip.work.func and tty->flip.tqueue.routine
> > are set to flush_to_ldisc()
>
> flush_to_ldisc was ok, then someone added the low latency
> flag. In the current 2.6.9rc3 patch flush_to_ldisc honours
> TTY_DONT_FLIP also

In the cases I described the low latency flag
does not come into play because flush_to_ldisc()
is called directly instead of
through tty_flip_buffer_push().

TTY_DONT_FLIP is only set in read_chan().
If read_chan() is not running, TTY_DONT_FLIP is not
set and does not prevent buffers from flipping
if the ISR calls flush_to_ldisc() directly
while ldisc->receive_buf() is running.

The answer seems to be: don't call
flush_to_ldisc directly like the current
serial driver does.

--
Paul Fulghum
paulkf@xxxxxxxxxxxxx

-
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/