MorphOS Developer
Posts: 510 from 2003/4/11
The Sam460le - apparently - has an extra PCI USB controller on-board compared to the Sam460ex. On the Sam460ex, the physical PCI slot is hooked up directly to the PCI controller of the CPU, where as on the Sam460le, both the physical PCI slot and the on-board USB controller are connected to a PCI-to-PCI bridge that's then connected to the CPU.
To probe and set up devices on a PCI bus, the system software directs the PCI controller to generate
configuration transactions on the PCI bus. These transactions are used to access the PCI configuration space of connected devices, which is the part of the PCI device that contains information such as the device's vendor and device IDs, as well as information about what memory and I/O are present on the device, and so on.
There are two types of PCI configuration transactions: Type 0 and type 1. Type 0 is used to address a device on the current PCI bus segment, and type 1 is used to forward a transaction to a different PCI bus segment, ie, to a device that's behind one or more PCI-to-PCI bridges.
Now the PCI controller in the CPU on the Sam460 is a bit special compared to other PCI controllers in that it's up to the system software to instruct the controller whether to generate type 0 or type 1 configuration transactions. MorphOS did have the code to do this, but as it turns out, the logic was faulty. Since the Sam460ex didn't have the PCI-to-PCI bridge that the Sam460le has, and PCI plug in boards that contain a PCI-to-PCI bridge are not very common, this faulty logic was never triggered before.
In your case, this means that when MorphOS tried to probe the devices behind the PCI-to-PCI bridge, it'd use a type 0 configuration transaction instead of a type 1 configuration transaction, which in turn caused the request to be answered by devices on the PCI bus segment local to the PCI controller, ie, the one with the PCI-to-PCI bridge on it. This meant that MorphOS would think that you had an infinite number of PCI-to-PCI bridges stacked behind each other, and thus would never manage to finish probing the PCI bus.
I rarely log in to MorphZone which means that I often miss private messages sent on here. If you wish to contact me, please email me at [username]@asgaard.morphos-team.net, where [username] is my username here on MorphZone.