From: "Roland Caßebohm" <roland.cassebohm@VisionSystems.de>
To: linux-kernel@vger.kernel.org
Subject: Serial driver hangs
Date: Tue, 28 Sep 2004 17:34:38 +0200 [thread overview]
Message-ID: <200409281734.38781.roland.cassebohm@visionsystems.de> (raw)
Hi,
my platform is uClinux kernel 2.4.24 with an ARM with PCI and
a 2 port VSCOM 200I PCI card.
I use the serial driver with very high load. With my
application sends and receives on two ports with 921600 baud.
After a while the driver hangs in an endless loop in the
interrupt routine.
As I can see, the bit TTY_DONT_FLIP in tty->flags is set, so
the receive-buffer can't be flipped. In receive_chars() all
ports are checked for received bytes, but if the buffer is
full and can't be flipped, no byte are read from the UART and
the interrupt will never go inactive.
>>>>>>>>>>>>
do {
if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
tty->flip.tqueue.routine((void *) tty);
if (tty->flip.count >= TTY_FLIPBUF_SIZE)
return; // if TTY_DONT_FLIP is set
}
ch = serial_inp(info, UART_RX);
*tty->flip.char_buf_ptr = ch;
icount->rx++;
>>>>>>>>>>>>
I have tried just to read all byte left in the FIFO of the
UART in that case and throw them away.
>>>>>>>>>>>>
if (tty->flip.count >= TTY_FLIPBUF_SIZE)
{
do {
ch = serial_inp(info, UART_RX);
icount->overrun++;
*status = serial_inp(info, UART_LSR);
} while (*status & UART_LSR_DR);
return; // if TTY_DONT_FLIP is set
}
>>>>>>>>>>>>
This is working but would probably not the best way, because
there could be enough place in the other flip buffer. Maybe
it is possible to disable the receive interrupt of the UART
till the receive routine read_chan(), which sets
TTY_DONT_FLIP, releases the buffer.
Thanks for any help,
Roland
--
___________________________________________________
VS Vision Systems GmbH, Industrial Image Processing
Dipl.-Ing. Roland Caßebohm
Aspelohe 27A, D-22848 Norderstedt, Germany
http://www.visionsystems.de
___________________________________________________
next reply other threads:[~2004-09-28 15:34 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-28 15:34 Roland Caßebohm [this message]
2004-09-28 21:10 ` Paul Fulghum
2004-09-28 21:16 ` Russell King
2004-09-28 23:03 ` Paul Fulghum
2004-09-28 22:12 ` Alan Cox
2004-09-29 1:12 ` Paul Fulghum
2004-09-29 13:09 ` Roland Caßebohm
2004-09-29 13:17 ` Paul Fulghum
2004-09-29 14:07 ` Roland Caßebohm
2004-09-29 14:25 ` Paul Fulghum
2004-09-30 16:16 ` Roland Caßebohm
2004-09-30 19:09 ` Paul Fulghum
2004-09-30 18:34 ` Alan Cox
2004-09-30 19:51 ` Paul Fulghum
2004-09-30 19:59 ` Russell King
2004-09-30 20:05 ` Paul Fulghum
2004-09-30 20:30 ` Paul Fulghum
2004-09-30 20:10 ` Alan Cox
2004-09-30 21:25 ` Paul Fulghum
2004-10-01 0:47 ` Paul Fulghum
2004-10-01 15:22 ` Roland Caßebohm
2004-10-01 16:06 ` Paul Fulghum
2004-10-01 20:13 ` Stuart MacDonald
2004-10-01 20:36 ` Paul Fulghum
2004-09-29 14:13 ` Paul Fulghum
2004-10-01 15:25 ` Roland Caßebohm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200409281734.38781.roland.cassebohm@visionsystems.de \
--to=roland.cassebohm@visionsystems.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®