Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15f9a310 authored by Robin Murphy's avatar Robin Murphy Committed by Joerg Roedel
Browse files

iommu/tegra-gart: Add iommu_group support



As the last step to making groups mandatory, clean up the remaining
drivers by adding basic support. Whilst it may not perfectly reflect the
isolation capabilities of the hardware, using generic_device_group()
should at least maintain existing behaviour with respect to the API.

Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
Tested-by: default avatarDmitry Osipenko <digetx@gmail.com>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent d92e1f84
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -334,12 +334,31 @@ static bool gart_iommu_capable(enum iommu_cap cap)
	return false;
}

static int gart_iommu_add_device(struct device *dev)
{
	struct iommu_group *group = iommu_group_get_for_dev(dev);

	if (IS_ERR(group))
		return PTR_ERR(group);

	iommu_group_put(group);
	return 0;
}

static void gart_iommu_remove_device(struct device *dev)
{
	iommu_group_remove_device(dev);
}

static const struct iommu_ops gart_iommu_ops = {
	.capable	= gart_iommu_capable,
	.domain_alloc	= gart_iommu_domain_alloc,
	.domain_free	= gart_iommu_domain_free,
	.attach_dev	= gart_iommu_attach_dev,
	.detach_dev	= gart_iommu_detach_dev,
	.add_device	= gart_iommu_add_device,
	.remove_device	= gart_iommu_remove_device,
	.device_group	= generic_device_group,
	.map		= gart_iommu_map,
	.map_sg		= default_iommu_map_sg,
	.unmap		= gart_iommu_unmap,