mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
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: Joerg Roedel <jroedel@suse.de> Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com> Link: https://lore.kernel.org/r/20200625130836.1916-7-joro@8bytes.org
This commit is contained in:
parent
8b9cc3b71b
commit
a5616e2460
@ -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;
|
||||
|
@ -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]);
|
||||
|
Loading…
Reference in New Issue
Block a user