Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Aug 1998 17:06:20 -0700
From:      Jason Thorpe <thorpej@nas.nasa.gov>
To:        Mike Smith <mike@smith.net.au>
Cc:        Terry Lambert <tlambert@primenet.com>, tony@dell.com, wpaul@skynet.ctr.columbia.edu, chuckr@glue.umd.edu, hackers@FreeBSD.ORG
Subject:   Re: PCI devices 
Message-ID:  <199808280006.RAA02540@lestat.nas.nasa.gov>

next in thread | raw e-mail | index | archive | help
On Thu, 27 Aug 1998 14:57:26 +0000 
 Mike Smith <mike@smith.net.au> wrote:

 > > Then the OS sucks.
 > 
 > Or perhaps it's just designed only to run on PnP systems.

...you guys really need to make a distinction between "PnP" (e.g. ISA PnP)
and direct configuration (e.g. what EISA, PCI, PCMCIA, and CardBus has).

 > > A nominally "PnP OS" that can't talk to "PnP cards", isn't very "PnP".
 > 
 > It may not support ISA PnP.  Please don't call them "PnP cards"; PCI 
 > cards are PnP cards, PCCARD cards are PnP cards.

Not really.. the bus they live on uses direct configuration, as opposed
to indirect configuration (e.g. ISA, VME).  That is to say, the devices
are self-describing in a well-known way, and it is possible to determine
where the device is mapped.

Indirect configuration requires hints to look for devices.

PnP is a hack to try and make ISA have direct configuration.  It's pure
evil, but I'm sure everyone here realizes that already.

The new "PnP OS" BIOS option is a total crock.  Basically, what it does
is, if set, doesn't do ANY configuration of ISA PnP or PCI, which, at least
in the context of PCI, is TOTALLY BROKEN.  The PCI spec is clear that it is
the system firmware's job to configure the PCI bus (i.e. map all of the
devices and route their interrupts).  It is unfortunate that BIOS vendors
are overloading the term "PnP" to apply to PCI as well.

To restate that: PCI SHOULD ALWAYS BE CONFIGURED BY THE BIOS (firmware)
REGARDLESS OF THE SETTING OF "PnP OS".

Sorry to shout, but this is a major issue, and something I'm quite miffed
at vendors about for botching royally.

NetBSD's PnP code doesn't require the presence of a PnP BIOS.  It performs
the PnP configuation process on its own.  I.e. it is a "PnP OS".  However,
because of the BIOS's broken notion of "PnP", NetBSD still requires that
that option be set to FALSE so that the firmware will do its job and configure
the PCI bus, like it's supposed to.  Of course, when our PnP code goes and
resets all of the PnP devices, you will lose if you already have attached them
as normal ISA devices.  So, we work around this by issuing a PnP reset before
doing any ISA device probes, if PnP support is configured into the kernel.

In a perfect world, all busses would be direct config, and none of this
would be an issue, because you could simply reserve the space used by
an device with no driver, or, such as in PCI, simply choose to not map
the device.  But, hey, this is PC hardware we're talking about.  It's not
likely that it'll be reasonably sane any time soon.

Jason R. Thorpe                                       thorpej@nas.nasa.gov
NASA Ames Research Center                            Home: +1 408 866 1912
NAS: M/S 258-5                                       Work: +1 650 604 0935
Moffett Field, CA 94035                             Pager: +1 650 940 5942

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199808280006.RAA02540>