iommu/tegra: Use dev_iommu_priv_get/set()
authorJoerg Roedel <jroedel@suse.de>
Thu, 25 Jun 2020 13:08:29 +0000 (15:08 +0200)
committerJoerg Roedel <jroedel@suse.de>
Tue, 30 Jun 2020 09:59:48 +0000 (11:59 +0200)
Remove the use of dev->archdata.iommu and use the private per-device
pointer provided by IOMMU core code instead.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
Link: https://lore.kernel.org/r/20200625130836.1916-7-joro@8bytes.org
drivers/iommu/tegra-gart.c
drivers/iommu/tegra-smmu.c

index 5fbdff6..fac7202 100644 (file)
@@ -113,8 +113,8 @@ static int gart_iommu_attach_dev(struct iommu_domain *domain,
 
        if (gart->active_domain && gart->active_domain != domain) {
                ret = -EBUSY;
-       } else if (dev->archdata.iommu != domain) {
-               dev->archdata.iommu = domain;
+       } else if (dev_iommu_priv_get(dev) != domain) {
+               dev_iommu_priv_set(dev, domain);
                gart->active_domain = domain;
                gart->active_devices++;
        }
@@ -131,8 +131,8 @@ static void gart_iommu_detach_dev(struct iommu_domain *domain,
 
        spin_lock(&gart->dom_lock);
 
-       if (dev->archdata.iommu == domain) {
-               dev->archdata.iommu = NULL;
+       if (dev_iommu_priv_get(dev) == domain) {
+               dev_iommu_priv_set(dev, NULL);
 
                if (--gart->active_devices == 0)
                        gart->active_domain = NULL;
index 7426b76..124c884 100644 (file)
@@ -465,7 +465,7 @@ static void tegra_smmu_as_unprepare(struct tegra_smmu *smmu,
 static int tegra_smmu_attach_dev(struct iommu_domain *domain,
                                 struct device *dev)
 {
-       struct tegra_smmu *smmu = dev->archdata.iommu;
+       struct tegra_smmu *smmu = dev_iommu_priv_get(dev);
        struct tegra_smmu_as *as = to_smmu_as(domain);
        struct device_node *np = dev->of_node;
        struct of_phandle_args args;
@@ -780,7 +780,7 @@ static struct iommu_device *tegra_smmu_probe_device(struct device *dev)
                         * supported by the Linux kernel, so abort after the
                         * first match.
                         */
-                       dev->archdata.iommu = smmu;
+                       dev_iommu_priv_set(dev, smmu);
 
                        break;
                }
@@ -797,7 +797,7 @@ static struct iommu_device *tegra_smmu_probe_device(struct device *dev)
 
 static void tegra_smmu_release_device(struct device *dev)
 {
-       dev->archdata.iommu = NULL;
+       dev_iommu_priv_set(dev, NULL);
 }
 
 static const struct tegra_smmu_group_soc *
@@ -856,7 +856,7 @@ static struct iommu_group *tegra_smmu_group_get(struct tegra_smmu *smmu,
 static struct iommu_group *tegra_smmu_device_group(struct device *dev)
 {
        struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev);
-       struct tegra_smmu *smmu = dev->archdata.iommu;
+       struct tegra_smmu *smmu = dev_iommu_priv_get(dev);
        struct iommu_group *group;
 
        group = tegra_smmu_group_get(smmu, fwspec->ids[0]);