diff options
-rw-r--r-- | drivers/pci/intel-iommu.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c index 420afa887283..3cad7006ed8e 100644 --- a/drivers/pci/intel-iommu.c +++ b/drivers/pci/intel-iommu.c | |||
@@ -1054,7 +1054,12 @@ static void iommu_flush_iotlb_psi(struct intel_iommu *iommu, u16 did, | |||
1054 | else | 1054 | else |
1055 | iommu->flush.flush_iotlb(iommu, did, addr, mask, | 1055 | iommu->flush.flush_iotlb(iommu, did, addr, mask, |
1056 | DMA_TLB_PSI_FLUSH); | 1056 | DMA_TLB_PSI_FLUSH); |
1057 | if (did) | 1057 | |
1058 | /* | ||
1059 | * In caching mode, domain ID 0 is reserved for non-present to present | ||
1060 | * mapping flush. Device IOTLB doesn't need to be flushed in this case. | ||
1061 | */ | ||
1062 | if (!cap_caching_mode(iommu->cap) || did) | ||
1058 | iommu_flush_dev_iotlb(iommu->domains[did], addr, mask); | 1063 | iommu_flush_dev_iotlb(iommu->domains[did], addr, mask); |
1059 | } | 1064 | } |
1060 | 1065 | ||