Subject: Re: PCI configuration
To: None <thorpej@zembu.com>
From: Nathan J. Williams <nathanw@MIT.EDU>
List: tech-kern
Date: 02/02/2001 17:21:18
Jason R Thorpe <thorpej@zembu.com> writes:
> for each device on the bus {
> assign space to the device;
> if device is a bridge {
> create extent map for bridge and
> recurse, allowing the bridge
> to assign addresses to its
> devices;
> }
> }
>
> When you encounter a PCI-something bridge, you have to recurse. This
> is why you have to do it in 2 loops -- if you do it in one loop,
> the PCI bridge won't have it's space allocated to it when it needs to
> assign addresses to the devices behind it... and you need to program
> the mapping window in the bridge.
Additionally, if the bridge is a type that allows adding devices at
runtime (CardBus, or hot-swap PCI, should we ever support that), you
want to allocate extra space and bus numbers for devices/sub-busses
that may be there in the future, so that you don't have to renumber
buses and remap devices (Major pain-and-suffering here!) when a device
is hot-plugged.
(How much space and how many bus numbers is a good question that I'm
not going to try to answer.)
- Nathan