mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 09:19:51 +00:00
iommu/exynos: Use first SYSMMU in controllers list for IOMMU core
On Exynos platforms there can be more than one SYSMMU (IOMMU) for one DMA master device. Since the IOMMU core code expects only one hardware IOMMU, use the first SYSMMU in the list. Signed-off-by: Joerg Roedel <jroedel@suse.de> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Acked-by: Marek Szyprowski <m.szyprowski@samsung.com> Link: https://lore.kernel.org/r/20200429133712.31431-31-joro@8bytes.org Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
6785eb9105
commit
66ae88e71e
1 changed files with 10 additions and 0 deletions
|
@ -1261,6 +1261,11 @@ static int exynos_iommu_add_device(struct device *dev)
|
|||
}
|
||||
iommu_group_put(group);
|
||||
|
||||
/* There is always at least one entry, see exynos_iommu_of_xlate() */
|
||||
data = list_first_entry(&owner->controllers,
|
||||
struct sysmmu_drvdata, owner_node);
|
||||
iommu_device_link(&data->iommu, dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1286,6 +1291,11 @@ static void exynos_iommu_remove_device(struct device *dev)
|
|||
|
||||
list_for_each_entry(data, &owner->controllers, owner_node)
|
||||
device_link_del(data->link);
|
||||
|
||||
/* There is always at least one entry, see exynos_iommu_of_xlate() */
|
||||
data = list_first_entry(&owner->controllers,
|
||||
struct sysmmu_drvdata, owner_node);
|
||||
iommu_device_unlink(&data->iommu, dev);
|
||||
}
|
||||
|
||||
static int exynos_iommu_of_xlate(struct device *dev,
|
||||
|
|
Loading…
Reference in a new issue