[lkml]   [2004]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: Serial driver hangs
Am Donnerstag, 30. September 2004 23:25 schrieb Paul Fulghum:
> On Thu, 2004-09-30 at 15:10, Alan Cox wrote:
> > On Iau, 2004-09-30 at 21:30, Paul Fulghum wrote:
> > > tty-> 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.

Yes, I think you are right, if the system is to slow to fetch
the data fast enough the buffer will be sometime full. And if
it would be possible to use the second flip buffer then, this
buffer would be full too sometime.
It would just take a little longer till data got lost. But if
I want that I could just make the buffers larger.


I have just tested it, but unfortunately I've got a very bad
result. :-( In my test case (2 port with 921600 baud) I get
very much data loss.

I think I will stay now by the solution of just trow away the
characters from the FIFO if flip buffer is full and
TTY_DONT_FLIP is set. I will test now the patch Paul has

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 14:06    [W:0.132 / U:0.332 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site