*BSD News Article 33241


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!howland.reston.ans.net!swrinde!ihnp4.ucsd.edu!pacbell.com!well!nigel.msen.com!cybernet.com!root
From: root@cybernet.com (Operator (aka Mark))
Newsgroups: comp.os.386bsd.questions
Subject: Re: SIO/COM driver 16550A limitations?
Date: 21 Jul 1994 16:09:00 GMT
Organization: Cybernet Systems, Inc.
Lines: 28
Distribution: world
Message-ID: <30m6it$2vc@nigel.msen.com>
References: <1994Jul4.130216.19263@bruce.cs.monash.edu.au> <5ShJnqRLVPB@pro-042.proline.gun.de>
NNTP-Posting-Host: 192.245.33.55

The reason that you are experiencing system lockup when you open the serial port
is because the serial card you are using is probably SMC-based.  The SMC
emulation of a 16550A is bad, but it can be worked around.

I've got a IDE/floppy/parallel/serial/game multifunction card with one of these
SMC / SiS chipsets on it.  There is a one line patch I got from the FreeBSD-core
team to the 1.1.5.1 kernel file /sys/i386/isa/sio.c which fixes this problem.

after line 747, add "(void) inb(com->data_port);".
it should look something like:

com->ftl_max = com->ftl_init;
++com->wopeners;
(void) inb(com->data_port);  /* added to fix bad SMC emulation of 16550A */
error = comparam(tp, &tp->t_termios);
--com->wopeners;


I've been running a 1.1.5.1 system as our Internet gateway via SL/IP on one of
these bogus serial chips for a few days now (since I upgraded the processor and
software).

FreeBSD 2.0 will have the fix in it, so this chipset will not be a problem in the
future.


-Mark Taylor
mtaylor@cybernet.com