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.