]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
iommu: Make iommu_device_link/unlink take a struct iommu_device
authorJoerg Roedel <jroedel@suse.de>
Wed, 1 Feb 2017 16:23:22 +0000 (17:23 +0100)
committerStefan Bader <stefan.bader@canonical.com>
Tue, 20 Jun 2017 08:50:05 +0000 (10:50 +0200)
This makes the interface more consistent with
iommu_device_sysfs_add/remove.

BugLink: http://bugs.launchpad.net/bugs/1688158
Signed-off-by: Joerg Roedel <jroedel@suse.de>
(cherry picked from commit e3d10af1128b6bc394f21656ff13753130f3c107)
Signed-off-by: Manoj Iyer <manoj.iyer@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
drivers/iommu/amd_iommu.c
drivers/iommu/intel-iommu.c
drivers/iommu/iommu-sysfs.c
include/linux/iommu.h

index 96ae5b36a645953e182fe8ece21d7ce6ce256a5c..1b5b8c5361c506f2b835642eff2e3e57fbdf1370 100644 (file)
@@ -472,7 +472,7 @@ static int iommu_init_device(struct device *dev)
 
        dev->archdata.iommu = dev_data;
 
-       iommu_device_link(&iommu->iommu.dev, dev);
+       iommu_device_link(&iommu->iommu, dev);
 
        return 0;
 }
@@ -514,7 +514,7 @@ static void iommu_uninit_device(struct device *dev)
        if (dev_data->domain)
                detach_device(dev);
 
-       iommu_device_unlink(&iommu->iommu.dev, dev);
+       iommu_device_unlink(&iommu->iommu, dev);
 
        iommu_group_remove_device(dev);
 
index 15562bb5cd91cf07bf6bce4db473783b610e2a21..4c10338071c637de97e21cefca2e517940f4c64a 100644 (file)
@@ -5197,7 +5197,7 @@ static int intel_iommu_add_device(struct device *dev)
        if (!iommu)
                return -ENODEV;
 
-       iommu_device_link(&iommu->iommu.dev, dev);
+       iommu_device_link(&iommu->iommu, dev);
 
        group = iommu_group_get_for_dev(dev);
 
@@ -5219,7 +5219,7 @@ static void intel_iommu_remove_device(struct device *dev)
 
        iommu_group_remove_device(dev);
 
-       iommu_device_unlink(&iommu->iommu.dev, dev);
+       iommu_device_unlink(&iommu->iommu, dev);
 }
 
 static void intel_iommu_get_resv_regions(struct device *device,
index bb87d35e471d75811629c9750408e1257704508a..c58351ed61c14309c7a72346bd56f659a7039637 100644 (file)
@@ -95,31 +95,31 @@ void iommu_device_sysfs_remove(struct iommu_device *iommu)
  * directory of the IOMMU device in sysfs and an "iommu" link will be
  * created under the linked device, pointing back at the IOMMU device.
  */
-int iommu_device_link(struct device *dev, struct device *link)
+int iommu_device_link(struct iommu_device *iommu, struct device *link)
 {
        int ret;
 
-       if (!dev || IS_ERR(dev))
+       if (!iommu || IS_ERR(iommu))
                return -ENODEV;
 
-       ret = sysfs_add_link_to_group(&dev->kobj, "devices",
+       ret = sysfs_add_link_to_group(&iommu->dev.kobj, "devices",
                                      &link->kobj, dev_name(link));
        if (ret)
                return ret;
 
-       ret = sysfs_create_link_nowarn(&link->kobj, &dev->kobj, "iommu");
+       ret = sysfs_create_link_nowarn(&link->kobj, &iommu->dev.kobj, "iommu");
        if (ret)
-               sysfs_remove_link_from_group(&dev->kobj, "devices",
+               sysfs_remove_link_from_group(&iommu->dev.kobj, "devices",
                                             dev_name(link));
 
        return ret;
 }
 
-void iommu_device_unlink(struct device *dev, struct device *link)
+void iommu_device_unlink(struct iommu_device *iommu, struct device *link)
 {
-       if (!dev || IS_ERR(dev))
+       if (!iommu || IS_ERR(iommu))
                return;
 
        sysfs_remove_link(&link->kobj, "iommu");
-       sysfs_remove_link_from_group(&dev->kobj, "devices", dev_name(link));
+       sysfs_remove_link_from_group(&iommu->dev.kobj, "devices", dev_name(link));
 }
index 290c8116dcb58e72b6c33edd61dc00b968228401..ac7c0f88c245537e65e752d45052e16348651899 100644 (file)
@@ -232,6 +232,8 @@ int  iommu_device_sysfs_add(struct iommu_device *iommu,
                            const struct attribute_group **groups,
                            const char *fmt, ...) __printf(4, 5);
 void iommu_device_sysfs_remove(struct iommu_device *iommu);
+int  iommu_device_link(struct iommu_device   *iommu, struct device *link);
+void iommu_device_unlink(struct iommu_device *iommu, struct device *link);
 
 static inline void iommu_device_set_ops(struct iommu_device *iommu,
                                        const struct iommu_ops *ops)
@@ -306,8 +308,6 @@ extern int iommu_domain_get_attr(struct iommu_domain *domain, enum iommu_attr,
                                 void *data);
 extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr,
                                 void *data);
-int iommu_device_link(struct device *dev, struct device *link);
-void iommu_device_unlink(struct device *dev, struct device *link);
 
 /* Window handling function prototypes */
 extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,