Subject: Re: Diaspora, politics, and MI
To: Grey Wolf <greywolf@siva.captech.com>
From: John F. Woods <jfw@jfwhome.funhouse.com>
List: current-users
Date: 09/19/1996 08:21:42
> Chris, have you looked at making the top half MI while making the grunt
>laborers MD?  It's not an unheard-of premise...

You obviously have to have some MD portion for this kind of thing, but
there's no reason to have the driver itself have any machine-dependant
details.

> [actually, I'm sure you must have looked at that concept by now, and you've
>  probably hit some performance problems; but it's REALLY hard to hit a MI
>  solution which doesn't suck performance-wise.]

Windows NT uses exactly the scheme described.  A DMA driver *always*,
*unconditionally* allocates a "mapping register" to connect I/O bus DMA
addresses to memory bus addresses, and *always* deallocates the mapping
register when DMA is complete.  (Gee, you'd think the NT designers were
old VAX hacks or something :-).  The Hardware Abstraction Layer contains
*all* of the knowledge about whether a given bus or machine needs registers,
bounce buffers, or no translation at all.  And while NT's performance may
suck, this fails to be a source of any perceptable suckage.

You wouldn't want *Windows NT* to be able to claim to be better designed
and more machine independant than NetBSD, would you?  ;-)