summaryrefslogtreecommitdiffstats
path: root/include/linux/dma_remapping.h
diff options
context:
space:
mode:
authorShaohua Li <shli@fb.com>2017-04-26 09:18:35 -0700
committerJoerg Roedel <jroedel@suse.de>2017-04-26 23:57:53 +0200
commitbfd20f1cc85010d2f2d77e544da05cd8c149ba9b (patch)
tree1da8f1e85622fbf83264b356e1a840c0639b9b65 /include/linux/dma_remapping.h
parent161b28aae1651aa7ad63ec14753aa8a751154340 (diff)
downloadlinux-0-day-bfd20f1cc85010d2f2d77e544da05cd8c149ba9b.tar.gz
linux-0-day-bfd20f1cc85010d2f2d77e544da05cd8c149ba9b.tar.xz
x86, iommu/vt-d: Add an option to disable Intel IOMMU force on
IOMMU harms performance signficantly when we run very fast networking workloads. It's 40GB networking doing XDP test. Software overhead is almost unaware, but it's the IOTLB miss (based on our analysis) which kills the performance. We observed the same performance issue even with software passthrough (identity mapping), only the hardware passthrough survives. The pps with iommu (with software passthrough) is only about ~30% of that without it. This is a limitation in hardware based on our observation, so we'd like to disable the IOMMU force on, but we do want to use TBOOT and we can sacrifice the DMA security bought by IOMMU. I must admit I know nothing about TBOOT, but TBOOT guys (cc-ed) think not eabling IOMMU is totally ok. So introduce a new boot option to disable the force on. It's kind of silly we need to run into intel_iommu_init even without force on, but we need to disable TBOOT PMR registers. For system without the boot option, nothing is changed. Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'include/linux/dma_remapping.h')
-rw-r--r--include/linux/dma_remapping.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/dma_remapping.h b/include/linux/dma_remapping.h
index 187c102997226..90884072fa732 100644
--- a/include/linux/dma_remapping.h
+++ b/include/linux/dma_remapping.h
@@ -39,6 +39,7 @@ extern int iommu_calculate_agaw(struct intel_iommu *iommu);
extern int iommu_calculate_max_sagaw(struct intel_iommu *iommu);
extern int dmar_disabled;
extern int intel_iommu_enabled;
+extern int intel_iommu_tboot_noforce;
#else
static inline int iommu_calculate_agaw(struct intel_iommu *iommu)
{