diff options
Diffstat (limited to 'drivers/pci/dmar.c')
-rw-r--r-- | drivers/pci/dmar.c | 14 |
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 | ||
738 | int qi_flush_iotlb(struct intel_iommu *iommu, u16 did, u64 addr, | 738 | void 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 | /* |