Skip site navigation (1)Skip section navigation (2)
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>