iommu: Decouple iommu_domain_alloc() from bus ops
authorRobin Murphy <robin.murphy@arm.com>
Tue, 21 Nov 2023 18:04:00 +0000 (18:04 +0000)
committerJoerg Roedel <jroedel@suse.de>
Mon, 27 Nov 2023 10:03:14 +0000 (11:03 +0100)
commitb4c0497169d54e08346678dbc79ded7809dae5b7
tree954c06690b79a8943dbf6b15cd2ed3feabe4c158
parenta9c362db39207c4934c9125e56ed730c5297c37c
iommu: Decouple iommu_domain_alloc() from bus ops

As the final remaining piece of bus-dependent API, iommu_domain_alloc()
can now take responsibility for the "one iommu_ops per bus" rule for
itself. It turns out we can't safely make the internal allocation call
any more group-based or device-based yet - that will have to wait until
the external callers can pass the right thing - but we can at least get
as far as deriving "bus ops" based on which driver is actually managing
devices on the given bus, rather than whichever driver won the race to
register first.

This will then leave us able to convert the last of the core internals
over to the IOMMU-instance model, allow multiple drivers to register and
actually coexist (modulo the above limitation for unmanaged domain users
in the short term), and start trying to solve the long-standing
iommu_probe_device() mess.

Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Link: https://lore.kernel.org/r/6c7313009aae0e39ae2855920990ebf85af4662f.1700589539.git.robin.murphy@arm.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/iommu.c