Home Home > GIT Browse > SLE12-SP4-AZURE
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Roedel <jroedel@suse.de>2019-05-14 11:39:04 +0200
committerJoerg Roedel <jroedel@suse.de>2019-05-14 11:39:07 +0200
commit0ba694493fc2c814de0aafe98eb64e74b968c58e (patch)
tree3a45cf4446b23d3d27f13f621d6297e8d91a8fc5
parent5661888210486dc4b4e2f211250d1d8cea84947f (diff)
iommu/vt-d: Don't request page request irq under
dmar_global_lock (bsc#1135006). suse-commit: a4a5de1eb347f9351e166a9116ea2efd15dd4e04
-rw-r--r--drivers/iommu/intel-iommu.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 0478b681ba31..4162ec21fe61 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -3435,7 +3435,13 @@ domains_done:
#ifdef CONFIG_INTEL_IOMMU_SVM
if (pasid_enabled(iommu) && ecap_prs(iommu->ecap)) {
+ /*
+ * Call dmar_alloc_hwirq() with dmar_global_lock held,
+ * could cause possible lock race condition.
+ */
+ up_write(&dmar_global_lock);
ret = intel_svm_enable_prq(iommu);
+ down_write(&dmar_global_lock);
if (ret)
goto free_iommu;
}