Commit f6440fcc authored by Lu Baolu's avatar Lu Baolu Committed by Joerg Roedel
Browse files

iommu: Remove iommu_domain_alloc()



The iommu_domain_alloc() interface is no longer used in the tree anymore.
Remove it to avoid dead code.

There is increasing demand for supporting multiple IOMMU drivers, and this
is the last bus-based thing standing in the way of that.

Signed-off-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/20241009041147.28391-5-baolu.lu@linux.intel.com


Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent ba1057ab
Loading
Loading
Loading
Loading
+0 −36
Original line number Diff line number Diff line
@@ -1965,42 +1965,6 @@ __iommu_group_domain_alloc(struct iommu_group *group, unsigned int type)
	return __iommu_domain_alloc(dev_iommu_ops(dev), dev, type);
}

static int __iommu_domain_alloc_dev(struct device *dev, void *data)
{
	const struct iommu_ops **ops = data;

	if (!dev_has_iommu(dev))
		return 0;

	if (WARN_ONCE(*ops && *ops != dev_iommu_ops(dev),
		      "Multiple IOMMU drivers present for bus %s, which the public IOMMU API can't fully support yet. You will still need to disable one or more for this to work, sorry!\n",
		      dev_bus_name(dev)))
		return -EBUSY;

	*ops = dev_iommu_ops(dev);
	return 0;
}

/*
 * The iommu ops in bus has been retired. Do not use this interface in
 * new drivers.
 */
struct iommu_domain *iommu_domain_alloc(const struct bus_type *bus)
{
	const struct iommu_ops *ops = NULL;
	int err = bus_for_each_dev(bus, NULL, &ops, __iommu_domain_alloc_dev);
	struct iommu_domain *domain;

	if (err || !ops)
		return NULL;

	domain = __iommu_domain_alloc(ops, NULL, IOMMU_DOMAIN_UNMANAGED);
	if (IS_ERR(domain))
		return NULL;
	return domain;
}
EXPORT_SYMBOL_GPL(iommu_domain_alloc);

/**
 * iommu_paging_domain_alloc() - Allocate a paging domain
 * @dev: device for which the domain is allocated
+0 −6
Original line number Diff line number Diff line
@@ -787,7 +787,6 @@ static inline void iommu_iotlb_gather_init(struct iommu_iotlb_gather *gather)
extern int bus_iommu_probe(const struct bus_type *bus);
extern bool device_iommu_capable(struct device *dev, enum iommu_cap cap);
extern bool iommu_group_has_isolated_msi(struct iommu_group *group);
extern struct iommu_domain *iommu_domain_alloc(const struct bus_type *bus);
struct iommu_domain *iommu_paging_domain_alloc(struct device *dev);
extern void iommu_domain_free(struct iommu_domain *domain);
extern int iommu_attach_device(struct iommu_domain *domain,
@@ -1079,11 +1078,6 @@ static inline bool device_iommu_capable(struct device *dev, enum iommu_cap cap)
	return false;
}

static inline struct iommu_domain *iommu_domain_alloc(const struct bus_type *bus)
{
	return NULL;
}

static inline struct iommu_domain *iommu_paging_domain_alloc(struct device *dev)
{
	return ERR_PTR(-ENODEV);