On 2022-06-16 23:23, Nicolin Chen wrote:
On Thu, Jun 16, 2022 at 06:40:14AM +0000, Tian, Kevin wrote:
The domain->ops validation was added, as a precaution, for mixed-driver
systems. However, at this moment only one iommu driver is possible. So
remove it.
It's true on a physical platform. But I'm not sure whether a virtual platform
is allowed to include multiple e.g. one virtio-iommu alongside a virtual VT-d
or a virtual smmu. It might be clearer to claim that (as Robin pointed out)
there is plenty more significant problems than this to solve instead of simply
saying that only one iommu driver is possible if we don't have explicit code
to reject such configuration. 😊
Will edit this part. Thanks!
Oh, physical platforms with mixed IOMMUs definitely exist already. The
main point is that while bus_set_iommu still exists, the core code
effectively *does* prevent multiple drivers from registering - even in
emulated cases like the example above, virtio-iommu and VT-d would both
try to bus_set_iommu(&pci_bus_type), and one of them will lose. The
aspect which might warrant clarification is that there's no combination
of supported drivers which claim non-overlapping buses *and* could
appear in the same system - even if you tried to contrive something by
emulating, say, VT-d (PCI) alongside rockchip-iommu (platform), you
could still only describe one or the other due to ACPI vs. Devicetree.
Thanks,
Robin.