aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/dmar.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/dmar.c')
-rw-r--r--drivers/pci/dmar.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c
index 10a071ba3232..df6af0d4ec03 100644
--- a/drivers/pci/dmar.c
+++ b/drivers/pci/dmar.c
@@ -735,22 +735,14 @@ void qi_flush_context(struct intel_iommu *iommu, u16 did, u16 sid, u8 fm,
735 qi_submit_sync(&desc, iommu); 735 qi_submit_sync(&desc, iommu);
736} 736}
737 737
738int qi_flush_iotlb(struct intel_iommu *iommu, u16 did, u64 addr, 738void qi_flush_iotlb(struct intel_iommu *iommu, u16 did, u64 addr,
739 unsigned int size_order, u64 type, 739 unsigned int size_order, u64 type)
740 int non_present_entry_flush)
741{ 740{
742 u8 dw = 0, dr = 0; 741 u8 dw = 0, dr = 0;
743 742
744 struct qi_desc desc; 743 struct qi_desc desc;
745 int ih = 0; 744 int ih = 0;
746 745
747 if (non_present_entry_flush) {
748 if (!cap_caching_mode(iommu->cap))
749 return 1;
750 else
751 did = 0;
752 }
753
754 if (cap_write_drain(iommu->cap)) 746 if (cap_write_drain(iommu->cap))
755 dw = 1; 747 dw = 1;
756 748
@@ -762,7 +754,7 @@ int qi_flush_iotlb(struct intel_iommu *iommu, u16 did, u64 addr,
762 desc.high = QI_IOTLB_ADDR(addr) | QI_IOTLB_IH(ih) 754 desc.high = QI_IOTLB_ADDR(addr) | QI_IOTLB_IH(ih)
763 | QI_IOTLB_AM(size_order); 755 | QI_IOTLB_AM(size_order);
764 756
765 return qi_submit_sync(&desc, iommu); 757 qi_submit_sync(&desc, iommu);
766} 758}
767 759
768/* 760/*