
On Fri, 2016-12-02 at 15:18 +1100, David Gibson wrote:
But if you pass through multiple groups, things get weird. On q35, you'd generally expect physically separate (different slot) devices to appear under separate root complexes. Whereas on pseries they'll appear as siblings on a virtual bus (which makes no physical sense for point-to-point PCI-E).
It's also somewhat broken if they aren't in the same iommu domain because the way we pass the iommu buid is via the parent node, so a given iommu domain must reside below a common parent and not share it.
I suppose we could try treating all devices on pseries as though they were chipset builtin devices on q35, which will appear on the root PCI-E bus without root complex. But I suspect that's likely to cause trouble with hotplug, and it will certainly need different address allocation from libvirt.