mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
BACKPORT: drivers/iommu: Export core IOMMU API symbols to permit modular drivers
Building IOMMU drivers as modules requires that the core IOMMU API
symbols are exported as GPL symbols.
Signed-off-by: Will Deacon <will@kernel.org>
Tested-by: John Garry <john.garry@huawei.com> # smmu v3
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Change-Id: Ib06e99673ebcf2bf6524712c335965dca6d4bdbe
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
(cherry picked from commit a7ba5c3d00)
This commit is contained in:
@@ -90,6 +90,7 @@ error:
|
||||
put_device(iommu->dev);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iommu_device_sysfs_add);
|
||||
|
||||
void iommu_device_sysfs_remove(struct iommu_device *iommu)
|
||||
{
|
||||
@@ -97,6 +98,8 @@ void iommu_device_sysfs_remove(struct iommu_device *iommu)
|
||||
device_unregister(iommu->dev);
|
||||
iommu->dev = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iommu_device_sysfs_remove);
|
||||
|
||||
/*
|
||||
* IOMMU drivers can indicate a device is managed by a given IOMMU using
|
||||
* this interface. A link to the device will be created in the "devices"
|
||||
@@ -122,6 +125,7 @@ int iommu_device_link(struct iommu_device *iommu, struct device *link)
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iommu_device_link);
|
||||
|
||||
void iommu_device_unlink(struct iommu_device *iommu, struct device *link)
|
||||
{
|
||||
@@ -131,3 +135,4 @@ void iommu_device_unlink(struct iommu_device *iommu, struct device *link)
|
||||
sysfs_remove_link(&link->kobj, "iommu");
|
||||
sysfs_remove_link_from_group(&iommu->dev->kobj, "devices", dev_name(link));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iommu_device_unlink);
|
||||
|
||||
@@ -100,6 +100,7 @@ int iommu_device_register(struct iommu_device *iommu)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iommu_device_register);
|
||||
|
||||
void iommu_device_unregister(struct iommu_device *iommu)
|
||||
{
|
||||
@@ -107,6 +108,7 @@ void iommu_device_unregister(struct iommu_device *iommu)
|
||||
list_del(&iommu->list);
|
||||
spin_unlock(&iommu_device_lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iommu_device_unregister);
|
||||
|
||||
static struct iommu_domain *__iommu_domain_alloc(struct bus_type *bus,
|
||||
unsigned type);
|
||||
@@ -786,6 +788,7 @@ struct iommu_group *iommu_group_ref_get(struct iommu_group *group)
|
||||
kobject_get(group->devices_kobj);
|
||||
return group;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iommu_group_ref_get);
|
||||
|
||||
/**
|
||||
* iommu_group_put - Decrement group reference
|
||||
@@ -959,6 +962,7 @@ struct iommu_group *generic_device_group(struct device *dev)
|
||||
{
|
||||
return iommu_group_alloc();
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(generic_device_group);
|
||||
|
||||
/*
|
||||
* Use standard PCI bus topology, isolation features, and DMA alias quirks
|
||||
@@ -1026,6 +1030,7 @@ struct iommu_group *pci_device_group(struct device *dev)
|
||||
/* No shared group found, allocate new */
|
||||
return iommu_group_alloc();
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_device_group);
|
||||
|
||||
/**
|
||||
* iommu_group_get_for_dev - Find or create the IOMMU group for a device
|
||||
@@ -1085,6 +1090,7 @@ struct iommu_group *iommu_group_get_for_dev(struct device *dev)
|
||||
|
||||
return group;
|
||||
}
|
||||
EXPORT_SYMBOL(iommu_group_get_for_dev);
|
||||
|
||||
struct iommu_domain *iommu_group_default_domain(struct iommu_group *group)
|
||||
{
|
||||
@@ -1904,6 +1910,7 @@ struct iommu_resv_region *iommu_alloc_resv_region(phys_addr_t start,
|
||||
region->type = type;
|
||||
return region;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iommu_alloc_resv_region);
|
||||
|
||||
/* Request that a device is direct mapped by the IOMMU */
|
||||
int iommu_request_dm_for_dev(struct device *dev)
|
||||
|
||||
Reference in New Issue
Block a user