Developer wrote:
If I am not mistaken, when the OS boots, it probes a configuration
space for the devices attached, it finds the configuration) and
updates it’s database, and loads the drivers accordingly to interact
with those memory spaces.
For PCI, this is true, yes. The BIOS probes PCI configuration space as
well, and does an initial assignment.
What I don’t understand is, when does this configuration space get
populated, is it by the BIOS, which probes the PNP devices and mapps
them, or is it the devices themselves they are intelligent enough to
map themselves in the free spaces accordingly? Also, is there a
specific space where top a type of device can map itself ( say a audio
card range, or a nic range)? and such devices try to map themselves
within that range in a free slot?
This is all described in great detail in the PCI Specification. You’re
probably familiary with the difference between “memory space” and “I/O
space”, but on a PCI bus, there is a third space as well: “configuration
space”. Each device is allocated a 256-byte chunk of this configuration
space, and it is required to respond to reads and some writes within
that configuration space. The configuration space includes the vendor
and device IDs, the memory and I/O requirements, the device class, the
power behavior, and a whole host of other, more esoteric information.
AGP is exactly the same. PCIExpress is also the same, except that the
per-card configuration space is larger.
For buses like USB and 1394, there is no such global space. The
operating system has to do all of the probing on its own.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.