Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2411427 authored by Joerg Roedel's avatar Joerg Roedel
Browse files

iommu/vt-d: Get rid of iommu_attach_vm_domain()



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: default avatarJoerg Roedel <jroedel@suse.de>
parent 8bf47816
Loading
Loading
Loading
Loading
+10 −16
Original line number Diff line number Diff line
@@ -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);

	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);