Date: Fri, 29 Dec 1995 21:36:17 -0700 From: smp@csn.net To: FreeBSD-gnats-submit@freebsd.org Subject: kern/920: sio output looses chars in fifo on close() Message-ID: <199512300436.VAA00509@clem.systemsix.com> Resent-Message-ID: <199512300440.UAA27505@freefall.freebsd.org>
index | next in thread | raw e-mail
>Number: 920
>Category: kern
>Synopsis: sio output looses chars in fifo on close()
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Dec 29 20:40:02 PST 1995
>Last-Modified:
>Originator: Steve Passe
>Organization:
--
Steve Passe
smp@csn.net
>Release: FreeBSD 2.1-STABLE i386
>Environment:
P5/pci/boca 8-port serial card
>Description:
The sio driver disables the fifo (of 16550 class chips) in
sioclose() -> comhardclose(). This appears to 'loose' characters
currently in the uart. If the port is open by another process
( as in "cat > /dev/ttyd4" ) the problem doesn't occur.
>How-To-Repeat:
echo characters to a serial port connected to an external monitoring
device. Note that you CANNOT merely send them back in thru a hard wire
and monitor with a "cat < /dev/ttyd4" as this keeps the port open and
'hides' the problem. Although I haven't tried it, I suspect you could
wire the output of ttyd4 to the input of ttyd5 and monitor it that way.
echo 1 2 3 4 5 6 7 8 9 0 > /dev/ttyd4
will get the "1 2 3 4 5 6 7 8" out the port but loose "9 0"
>Fix:
removing/disabling lines 989-996 from src/sys/i386/isa/sio.c 'fixes'
the problem:
> if (com->hasfifo) {
> /*
> * Disable fifos so that they are off after controlled
> * reboots. Some BIOSes fail to detect 16550s when the
> * fifos are enabled.
> */
> outb(iobase + com_fifo, 0);
> }
>Audit-Trail:
>Unformatted:
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512300436.VAA00509>
