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>
next in thread | raw e-mail | index | archive | help
>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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512300436.VAA00509>