aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/intel-iommu.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/intel-iommu.c')
-rw-r--r--drivers/pci/intel-iommu.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index e6fe1994f9d3..4eaec2fa1369 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -3561,10 +3561,13 @@ static void domain_remove_one_dev_info(struct dmar_domain *domain,
3561 domain_update_iommu_cap(domain); 3561 domain_update_iommu_cap(domain);
3562 spin_unlock_irqrestore(&domain->iommu_lock, tmp_flags); 3562 spin_unlock_irqrestore(&domain->iommu_lock, tmp_flags);
3563 3563
3564 spin_lock_irqsave(&iommu->lock, tmp_flags); 3564 if (!(domain->flags & DOMAIN_FLAG_VIRTUAL_MACHINE) &&
3565 clear_bit(domain->id, iommu->domain_ids); 3565 !(domain->flags & DOMAIN_FLAG_STATIC_IDENTITY)) {
3566 iommu->domains[domain->id] = NULL; 3566 spin_lock_irqsave(&iommu->lock, tmp_flags);
3567 spin_unlock_irqrestore(&iommu->lock, tmp_flags); 3567 clear_bit(domain->id, iommu->domain_ids);
3568 iommu->domains[domain->id] = NULL;
3569 spin_unlock_irqrestore(&iommu->lock, tmp_flags);
3570 }
3568 } 3571 }
3569 3572
3570 spin_unlock_irqrestore(&device_domain_lock, flags); 3573 spin_unlock_irqrestore(&device_domain_lock, flags);