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

Commit 6698a71a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull iommu fix from Joerg Roedel:
 "Revert a commit from the previous pile of fixes which causes new
  lockdep splats. It is better to revert it for now and work on a better
  and more well tested fix"

* tag 'iommu-fix-v5.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
  Revert "iommu/vt-d: Fix lock inversion between iommu->lock and device_domain_lock"
parents b253d5f3 0aafc8ae
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -2504,7 +2504,6 @@ static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu,
		}
	}

	spin_lock(&iommu->lock);
	spin_lock_irqsave(&device_domain_lock, flags);
	if (dev)
		found = find_domain(dev);
@@ -2520,16 +2519,17 @@ static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu,

	if (found) {
		spin_unlock_irqrestore(&device_domain_lock, flags);
		spin_unlock(&iommu->lock);
		free_devinfo_mem(info);
		/* Caller must free the original domain */
		return found;
	}

	spin_lock(&iommu->lock);
	ret = domain_attach_iommu(domain, iommu);
	spin_unlock(&iommu->lock);

	if (ret) {
		spin_unlock_irqrestore(&device_domain_lock, flags);
		spin_unlock(&iommu->lock);
		free_devinfo_mem(info);
		return NULL;
	}
@@ -2539,7 +2539,6 @@ static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu,
	if (dev)
		dev->archdata.iommu = info;
	spin_unlock_irqrestore(&device_domain_lock, flags);
	spin_unlock(&iommu->lock);

	/* PASID table is mandatory for a PCI device in scalable mode. */
	if (dev && dev_is_pci(dev) && sm_supported(iommu)) {