]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iommu/arm-smmu-v3: Use the identity/blocked domain during release
authorJason Gunthorpe <jgg@nvidia.com>
Mon, 26 Feb 2024 17:07:25 +0000 (13:07 -0400)
committerWill Deacon <will@kernel.org>
Thu, 29 Feb 2024 15:12:23 +0000 (15:12 +0000)
Consolidate some more code by having release call
arm_smmu_attach_dev_identity/blocked() instead of open coding this.

Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Moritz Fischer <moritzf@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/14-v6-96275f25c39d+2d4-smmuv3_newapi_p1_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c

index baec827e6ae446a24439d326e5c822ad6702fdad..1303e9c603fc6a6987e2700bcce675f025b250ff 100644 (file)
@@ -2924,19 +2924,16 @@ err_free_master:
 static void arm_smmu_release_device(struct device *dev)
 {
        struct arm_smmu_master *master = dev_iommu_priv_get(dev);
-       struct arm_smmu_ste target;
 
        if (WARN_ON(arm_smmu_master_sva_enabled(master)))
                iopf_queue_remove_device(master->smmu->evtq.iopf, dev);
 
        /* Put the STE back to what arm_smmu_init_strtab() sets */
        if (disable_bypass && !dev->iommu->require_direct)
-               arm_smmu_make_abort_ste(&target);
+               arm_smmu_attach_dev_blocked(&arm_smmu_blocked_domain, dev);
        else
-               arm_smmu_make_bypass_ste(&target);
-       arm_smmu_install_ste_for_dev(master, &target);
+               arm_smmu_attach_dev_identity(&arm_smmu_identity_domain, dev);
 
-       arm_smmu_detach_dev(master);
        arm_smmu_disable_pasid(master);
        arm_smmu_remove_master(master);
        if (master->cd_table.cdtab)