powerpc/iommu: Refactor spapr_tce_platform_iommu_attach_dev()
authorShivaprasad G Bhat <sbhat@linux.ibm.com>
Thu, 15 Feb 2024 13:52:32 +0000 (07:52 -0600)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 3 Apr 2024 03:28:55 +0000 (14:28 +1100)
The patch makes the iommu_group_get() call only when using it
thereby avoiding the unnecessary get & put for domain already
being set case.

Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/170800513841.2411.13524607664262048895.stgit@linux.ibm.com
arch/powerpc/kernel/iommu.c

index 1185efebf032b6e7d2cf08db4c953938948a44b1..29a8c8e185851ba1e710146e3abae7d07e8a8dc8 100644 (file)
@@ -1285,15 +1285,14 @@ spapr_tce_platform_iommu_attach_dev(struct iommu_domain *platform_domain,
                                    struct device *dev)
 {
        struct iommu_domain *domain = iommu_get_domain_for_dev(dev);
-       struct iommu_group *grp = iommu_group_get(dev);
        struct iommu_table_group *table_group;
+       struct iommu_group *grp;
 
        /* At first attach the ownership is already set */
-       if (!domain) {
-               iommu_group_put(grp);
+       if (!domain)
                return 0;
-       }
 
+       grp = iommu_group_get(dev);
        table_group = iommu_group_get_iommudata(grp);
        /*
         * The domain being set to PLATFORM from earlier