Robin Murphy
2022-Jun-22 07:54 UTC
[PATCH v2 3/5] vfio/iommu_type1: Remove the domain->ops comparison
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.
Tian, Kevin
2022-Jun-23 03:50 UTC
[PATCH v2 3/5] vfio/iommu_type1: Remove the domain->ops comparison
> From: Robin Murphy <robin.murphy at arm.com> > Sent: Wednesday, June 22, 2022 3:55 PM > > 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. >This explanation is much clearer! thanks.