OSDN Git Service

iommu/arm-smmu-v3: Use accessor functions for iommu private data
authorJoerg Roedel <jroedel@suse.de>
Thu, 26 Mar 2020 15:08:34 +0000 (16:08 +0100)
committerJoerg Roedel <jroedel@suse.de>
Fri, 27 Mar 2020 10:14:51 +0000 (11:14 +0100)
Make use of dev_iommu_priv_set/get() functions in the code.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
Tested-by: Hanjun Guo <guohanjun@huawei.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Link: https://lore.kernel.org/r/20200326150841.10083-10-joro@8bytes.org
drivers/iommu/arm-smmu-v3.c

index aa3ac2a..2b68498 100644 (file)
@@ -2659,7 +2659,7 @@ static int arm_smmu_attach_dev(struct iommu_domain *domain, struct device *dev)
        if (!fwspec)
                return -ENOENT;
 
-       master = fwspec->iommu_priv;
+       master = dev_iommu_priv_get(dev);
        smmu = master->smmu;
 
        arm_smmu_detach_dev(master);
@@ -2795,7 +2795,7 @@ static int arm_smmu_add_device(struct device *dev)
        if (!fwspec || fwspec->ops != &arm_smmu_ops)
                return -ENODEV;
 
-       if (WARN_ON_ONCE(fwspec->iommu_priv))
+       if (WARN_ON_ONCE(dev_iommu_priv_get(dev)))
                return -EBUSY;
 
        smmu = arm_smmu_get_by_fwnode(fwspec->iommu_fwnode);
@@ -2810,7 +2810,7 @@ static int arm_smmu_add_device(struct device *dev)
        master->smmu = smmu;
        master->sids = fwspec->ids;
        master->num_sids = fwspec->num_ids;
-       fwspec->iommu_priv = master;
+       dev_iommu_priv_set(dev, master);
 
        /* Check the SIDs are in range of the SMMU and our stream table */
        for (i = 0; i < master->num_sids; i++) {
@@ -2852,7 +2852,7 @@ err_unlink:
        iommu_device_unlink(&smmu->iommu, dev);
 err_free_master:
        kfree(master);
-       fwspec->iommu_priv = NULL;
+       dev_iommu_priv_set(dev, NULL);
        return ret;
 }
 
@@ -2865,7 +2865,7 @@ static void arm_smmu_remove_device(struct device *dev)
        if (!fwspec || fwspec->ops != &arm_smmu_ops)
                return;
 
-       master = fwspec->iommu_priv;
+       master = dev_iommu_priv_get(dev);
        smmu = master->smmu;
        arm_smmu_detach_dev(master);
        iommu_group_remove_device(dev);