Subject: Re: New IDE system: first pass
To: Manuel Bouyer <>
From: Chris G. Demetriou <>
List: port-i386
Date: 05/20/1998 11:08:16
> On May 20, Chris G. Demetriou wrote
> > This is backwards, in my opinion.
> > 
> > There's a standard interface.  Devices which claim to support the
> > standard interface should be supported by the driver.
> It's PC world, don't forget :)

Sure, but that doesn't change the meaning of broken.

If our drivers for 'standard' devices all catered to broken devices
that did not work properly, and people had to enable enhanced
functionality by hand -- not even by config file modification; by
_source_ file modification! -- for all of them:

	(1) NetBSD wouldn't perform nearly as well as it does for
	    most configurations (because most people wouldn't bother),

	(2) NetBSD would be harder to use for those who actually _did_
	    care about performance.

Treat broken as broken.  There are enough non-broken PCI IDE
controllers in existence that it shouldn't be much of a problem.
Also, note that the the 'use compatiblity addresses' solution only
works when the PCI IDE controllers are set up to use compatibility
mode.  That's common for PCs (but not universal -- there are PCI IDE
add-in cards), but is less common for other systems which contain PCI
IDE controllers.

> > There may be a few special cases where devices claim to support the
> > standard interface and don't.  That's a device bug, and should be
> > handled specially, not by penalizing all of the controllers that do
> > the right thing but that we don't happen to have specific information
> > on.
> > [...]
> > "Punish" and treat as broken the special, broken, cases, not
> > non-broken devices.
> Ok. We could add a flag for this for the few (?) special cases for this
> (In fact it's already what I did for the CMD PCI0640).
> But we need the vendor/products table to be able to enable some special
> features of some devices.

It shouldn't be a driver flag (i.e. left to user configuration), if
that's what you mean.  If the driver recognizes a special device,
flags could be set, special function hooks could be used, etc.

anyway, enough of this.  8-)