* Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net [080829 12:54]:
On 29.08.2008 12:41, Stefan Reinauer wrote:
Carl-Daniel Hailfinger wrote:
* dev->link[0] for a PCI domain is the domain link.
* The child of the domain link is the PCI bus device.
"PCI bus device" - is that the host bridge?
Let me illustrate this with an excerpt of our device tree.
We call pci_domain_scan_bus(dev_domain_0, ...) and dev_domain_0->link[0] is the PCI domain link. However, pci_scan_bus() expects to be called with dev_bus_0->link[0] which equals dev_domain_0->link[0].children->link[0]. "pci bus device" refers to dev_bus_0.
Ok, so why do we have
a) a pci domain b) a pci bus "device" whatever that is supposed to depict c) a pci bridge (host bridge)
all describing the same physical entity.
We had weird stuff in v2, but now it's not fixed, it's just different weird.
Can multiple buses be directly below a domain or do these buses hang off a bridge on a bus? For the latter case, this should be handled by pci_scan_bridge.
A PCI domain is not a physical device. It doesnt even virtually exist on x86, at least not on pre-PCIe systems.
Stefan