Commit a5616e24 authored by Joerg Roedel's avatar Joerg Roedel
Browse files

iommu/tegra: Use dev_iommu_priv_get/set()



Remove the use of dev->archdata.iommu and use the private per-device
pointer provided by IOMMU core code instead.

Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
Reviewed-by: default avatarJerry Snitselaar <jsnitsel@redhat.com>
Link: https://lore.kernel.org/r/20200625130836.1916-7-joro@8bytes.org
parent 8b9cc3b7
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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;
+4 −4
Original line number Diff line number Diff line
@@ -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]);