iommu/vt-d: Get rid of iommu_attach_vm_domain()
authorJoerg Roedel <jroedel@suse.de>
Tue, 21 Jul 2015 09:18:21 +0000 (11:18 +0200)
committerJoerg Roedel <jroedel@suse.de>
Wed, 12 Aug 2015 14:23:33 +0000 (16:23 +0200)
The special case for VM domains is not needed, as other
domains could be attached to the iommu in the same way. So
get rid of this special case.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel-iommu.c

index 90ab4b0..0a07b44 100644 (file)
@@ -1671,8 +1671,13 @@ static int __iommu_attach_domain(struct dmar_domain *domain,
        int num;
        unsigned long ndomains;
 
+       num = domain->iommu_did[iommu->seq_id];
+       if (num)
+               return num;
+
        ndomains = cap_ndoms(iommu->cap);
-       num = find_first_zero_bit(iommu->domain_ids, ndomains);
+       num      = find_first_zero_bit(iommu->domain_ids, ndomains);
+
        if (num < ndomains) {
                set_bit(num, iommu->domain_ids);
                set_iommu_domain(iommu, num, domain);
@@ -1681,6 +1686,9 @@ static int __iommu_attach_domain(struct dmar_domain *domain,
                num = -ENOSPC;
        }
 
+       if (num < 0)
+               pr_err("%s: No free domain ids\n", iommu->name);
+
        return num;
 }
 
@@ -1693,24 +1701,10 @@ static int iommu_attach_domain(struct dmar_domain *domain,
        spin_lock_irqsave(&iommu->lock, flags);
        num = __iommu_attach_domain(domain, iommu);
        spin_unlock_irqrestore(&iommu->lock, flags);
-       if (num < 0)
-               pr_err("%s: No free domain ids\n", iommu->name);
 
        return num;
 }
 
-static int iommu_attach_vm_domain(struct dmar_domain *domain,
-                                 struct intel_iommu *iommu)
-{
-       int num;
-
-       num = domain->iommu_did[iommu->seq_id];
-       if (num)
-               return num;
-
-       return __iommu_attach_domain(domain, iommu);
-}
-
 static void iommu_detach_domain(struct dmar_domain *domain,
                                struct intel_iommu *iommu)
 {
@@ -1947,7 +1941,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain,
 
        if (domain_type_is_vm_or_si(domain)) {
                if (domain_type_is_vm(domain)) {
-                       id = iommu_attach_vm_domain(domain, iommu);
+                       id = __iommu_attach_domain(domain, iommu);
                        if (id < 0) {
                                spin_unlock_irqrestore(&iommu->lock, flags);
                                pr_err("%s: No free domain ids\n", iommu->name);