Subject: Re: com rumblings...
To: Charles M. Hannum <mycroft@MIT.EDU>
From: Garrett D'Amore <>
List: tech-kern
Date: 06/15/2006 13:17:06
Charles M. Hannum wrote:
> On Thu, Jun 15, 2006 at 06:10:45PM +0200, Pavel Cahyna wrote:
>> I have a 486 with a FIFO-less serial port which was actually used as a
>> router with a modem. I'll try to benchmark the impact of your changes on it.
> Naively, that might seem like a good test.  However, the original goal
> of my com(4) rewrite a decade ago was to support *multiple* modems --
> sometimes multiple 4- or 6-port cards -- simultaneously, because people
> were building massive dialup servers running on cheap PCs.  This may
> not be an issue any more, but this and several other changes in recent
> years have almost certainly slowed things down enough that those
> machines would not work any more.

Wouldn't those 4- or 6- (or more!) port cards generally have working
FIFOs on them?  I have a PCI card that has 4 16c950s that can be driven
much faster -- like around 4mbps I think, and I doubt my changes would
impact such a device even on lower end systems.

The goal of what I'm doing now is to try to eliminate the need to
maintain several different drivers that are 90% (or 95%) the same as
com(4), just to cope with slightly different register layouts and such. 
(The au1x00 is interesting, because, for example, it uses a single
16-byte clock divider register, doesn't need or have a way to enable
access to it via LCR, and has separate TX and RX data registers.  In
almost all other respects it behaves as a standard 16550.)

As you have some knowledge of com(4), I would dearly, dearly like you to
review the changes that I have made in gdamore-uart, and send me your
feedback.  I've tried to keep everything efficient, but there is
possibly an extra memory indirection to get from the struct com_regs to
the bus_space_tag and handle.  (Where before they were cached in local

Garrett D'Amore, Principal Software Engineer
Tadpole Computer / Computing Technologies Division,
General Dynamics C4 Systems
Phone: 951 325-2134  Fax: 951 325-2191