On Fri, Dec 02, 2016 at 04:17:50PM +1100, Benjamin Herrenschmidt wrote:
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.
Uh.. I don't entirely follow you. From the host point of view there
are multiple iommu groups (PEs), but from the guest point of view
there's only one. On the guest side iommu granularity is always
per-vPHB.
> 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.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson