iommu/tegra-gart: Add iommu_group support
authorRobin Murphy <robin.murphy@arm.com>
Fri, 21 Jul 2017 12:12:37 +0000 (13:12 +0100)
committerJoerg Roedel <jroedel@suse.de>
Wed, 9 Aug 2017 22:03:50 +0000 (00:03 +0200)
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: Robin Murphy <robin.murphy@arm.com>
Tested-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/tegra-gart.c

index 37e708f..29bafc6 100644 (file)
@@ -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,