On Sun, 2015-06-14 at 17:59 -0400, Kevin O'Connor wrote:
There are x86 systems with multiple separate PCI root buses where one can access the pci config space of all the buses using the same 0x0cf8 IO space. During system setup, the multiple PCI root buses are each configured to only respond to PCI config accesses within its range of bus numbers. So if "root1" is configured for bus ids between 64-128, then it will only forward the request if the bus id in the request is between 64-128.
I suspect in your PPC example that the separate root buses all had separate io/memory space as well and thus were completely separate. (That is, they don't share the equivalent of IO 0x0cf8.) If so, that's different from how the x86 qemu code and the x86 systems I was discussing above work.
Correct, my point is that qemu shouldn't be made to rely on the stable bus numbers. Why not use the mmconfig address instead ? That way you can factor the bus number in via an offset if it's relevant or provide a completely different address if the busses are separate.
Ben.