iommu/amd: Consolidate logic to allocate protection domain
authorSuravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Thu, 21 Sep 2023 09:21:36 +0000 (09:21 +0000)
committerJoerg Roedel <jroedel@suse.de>
Mon, 25 Sep 2023 10:39:00 +0000 (12:39 +0200)
Move the logic into the common caller function to simplify the code.

No functional changes intended.

Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
Link: https://lore.kernel.org/r/20230921092147.5930-4-vasant.hegde@amd.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd/iommu.c

index 6fa6a0527d7ba5d8d3757b20ed41a8cbd8d0cdcd..c99611139ab55c122ca5c9b01fbbf6ef02447f89 100644 (file)
@@ -2046,12 +2046,6 @@ static int protection_domain_init_v1(struct protection_domain *domain, int mode)
 
        BUG_ON(mode < PAGE_MODE_NONE || mode > PAGE_MODE_6_LEVEL);
 
-       spin_lock_init(&domain->lock);
-       domain->id = domain_id_alloc();
-       if (!domain->id)
-               return -ENOMEM;
-       INIT_LIST_HEAD(&domain->dev_list);
-
        if (mode != PAGE_MODE_NONE) {
                pt_root = (void *)get_zeroed_page(GFP_KERNEL);
                if (!pt_root) {
@@ -2067,12 +2061,6 @@ static int protection_domain_init_v1(struct protection_domain *domain, int mode)
 
 static int protection_domain_init_v2(struct protection_domain *domain)
 {
-       spin_lock_init(&domain->lock);
-       domain->id = domain_id_alloc();
-       if (!domain->id)
-               return -ENOMEM;
-       INIT_LIST_HEAD(&domain->dev_list);
-
        domain->flags |= PD_GIOV_MASK;
 
        domain->domain.pgsize_bitmap = AMD_IOMMU_PGSIZES_V2;
@@ -2112,6 +2100,13 @@ static struct protection_domain *protection_domain_alloc(unsigned int type)
        if (!domain)
                return NULL;
 
+       domain->id = domain_id_alloc();
+       if (!domain->id)
+               goto out_err;
+
+       spin_lock_init(&domain->lock);
+       INIT_LIST_HEAD(&domain->dev_list);
+
        switch (pgtable) {
        case AMD_IOMMU_V1:
                ret = protection_domain_init_v1(domain, mode);