Device Mapping

HI All,

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.

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?

Thanks,

  • Developer

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.

Catch hold of the book by Mindshare on PCIExpress and read the chapter
device enumeration. Pretty helpful.

banks

“Tim Roberts” wrote in message news:xxxxx@ntdev…
> 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.
>
>