On Wed, 01 Jan 2003 11:33:23 +0100 (CET), Daniela Engert wrote:

>>I won't configure anything at all in that case and leave it to the cardbus 
>>driver.
>Exactly. Don't try to solve things which are already solved.

I didn't know that it was solved already, because I assumed it would work differently 
:-)

>>BTW. why do you need to assign a PCI-bus to the cardbus controller device then? Or 
>is this needed at 
all??
>What most people call a PCI bus is in fact a tree of PCI buses. The
>root is the host-to-PCI bridge/s (there may be multiple) where PCI bus
>0 is dangling off. Desktop mobos with AGP have at least 2 buses (the
>AGP bus is sitting behind a PCI-to-AGP bridge). Today, there are often

I know this, but AGP is actually a PCI-to-PCI bridge. This one needs a PCI-bus 
assigned of course.

>3 buses, PCI bus 0 is implemented as the HubLink (Intel), VLink (VIA),
>HyperTransport Channel (AMD, Nvidia), etc. and the "PCI BUS" visible to
>the user as actual slots is PCI bus 1. Think of the PCI bus tree as a
>directory tree, with non-bridge functions as regular files, and bridge
>functions as subdirectories.
>
>While it's pretty easy to route memory or IO space transactions up and
>down the tree from source to target, this doesn't hold true for
>configuration space transactions. There are special configuration space
>transaction types defined on a single PCI bus which PCI functions
>respond to, but the decoding if a particular config cycle has to take
>place on a given PCI bus has to be done by the bridge where the bus
>originates from. If so, a different signalling takes place for local
>config cycles (type 1 IIRC). All other configuration cycles need to be
>routed to the proper bridge function (by type 2 config cycles), and to
>do that you need a window of PCI bus numbers which are routed "down" to
>subordinate PCI buses by a PCI-to-anything bridge. So what't required:
>
>1) the number of the "upper" PCI bus a bridge sits on (primary bus)
>2) the number of the "lower" PCI bus "behind" a bridge (secondary bus)
>3) the highest PCI bus number "behind" a bridge (subordinate bus)

Ahhh.
That's what subordinate bus is. I tried to figure this out, but I found no explanation 
anywhere.

>2) and 3) combined define the window of PCI bus numbers dangling off a
>particular bridge, and configuration cycles to these PCI buses has a
>bridge to forward down from upper PCI buses. The same is true in the
>opposite direction: config cycles originating from a lower bus (with a
>higher number) needs to be forwarded to upper buses except for the PCI
>bus the bridge itself sits on; in this case the bridge has to translate
>the routable type 2 config cycles into non-routable type 1 config
>cycles which non-bridge PCI functions respond to.
>Remember this scheme relies on a strong ordering of PCI bus numbers!

My current enumeration logic is as follows:
1) enumerate bus 0 and all already assigned buses (PCI2PCI bridges)
2) now check, if there were any unassigned PCI2PCI bridges
3) assign those and scan those freshly assigned buses
4) go 2 till no unassigned bridges are left anywhere

Is this logic okay or do I have to work exclusively on one freshly assigned bridge, 
till there are no unassigned 
bridges behind that bridge making all bus numbers to be behind each other.

e.g. (crazy example I know)
Bus 0 -> PCI2PCI Bridge -> PCI2PCI bridge -> NIC
          -> PCI2PCI Bridge -> PCI2PCI bridge -> Soundcard

If all of those bridges are unassigned, my current way would be to assign bus 1 to the 
1st bridge on bus 0 and 
bus 2 to the 2nd bridge on bus 0. The bridge behind the NIC would get bus 3 and the 
bridge behind the 
soundcard would get bus 4.

Or should I work through all unassigned bridges in the whole making: 1st bridge -> bus 
1. Bridge with NIC to 
bus 2. 2nd bridge on bus 0 -> bus 3 and bridge with soundcard to bus 4?

As far as I understood the 2nd solution seems to be the right one.
Also I would really like to leave all assigned bridges (by BIOS) as they are. Is this 
okay?

cu, Kiewitz


-----------
To unsubscribe yourself from this list, send the following message
to [EMAIL PROTECTED]

     unsubscribe acpi-os2
     end

Reply via email to