On Thu, Dec 24, 2009 at 08:16:19PM +0200, Gleb Natapov wrote:
Ah so pci_bdf_to_bus(bdf) > 0 for the bus behind PCI-to-PCI bridge?
Yes - if it is configured properly (which pciinit.c doesn't).
I don't wee why you read spec this way. Can you point me to the part of the spec that makes you think so?
The purpose of the table is to relay to the OS info the OS can't find on its own - a pci-to-pci bridge on an add-on card is fully auto-detectable. The mpspec doesn't seem to require bridges of add-on cards be listed - from the spec:
Each bus in a system must have a unique BUS ID if any one of the following criteria are true: 1. The bus does not share its memory address space with another bus. 2. The bus does not share its I/O address space with another bus. 3. The bus does not share interrupt lines with another bus. 4. Any aspect of the bus as an independent entity is software visible (such as PCI configuration space).
The first three clearly don't apply. The fourth seems ambiguous to me.
That said, I don't see any reason why they couldn't be listed. However, the code right now would produce incorrect results for bus > 0.
BTW, section D.2 of the mpspec indicates that buses must be listed in ascending order - so the code should probably define the PCI bus first.
In any case, I'll separate out the memory part of the patch - we can debate the merits of pci buses separately.