summaryrefslogtreecommitdiff
path: root/drivers/pci/iova.h
diff options
context:
space:
mode:
authormark gross <mgross@linux.intel.com>2008-03-04 23:22:08 (GMT)
committerGreg Kroah-Hartman <gregkh@suse.de>2008-04-21 04:47:07 (GMT)
commit5e0d2a6fc094a9b5047998deefeb1254c66856ee (patch)
treeeb4f5bfbd1b5f937685c1f980ca83fc21c377fea /drivers/pci/iova.h
parent0255f543d9888fb5c5fbcd265ca2eee2d6ecff6a (diff)
downloadlinux-5e0d2a6fc094a9b5047998deefeb1254c66856ee.tar.xz
PCI: iommu: iotlb flushing
This patch is for batching up the flushing of the IOTLB for the DMAR implementation found in the Intel VT-d hardware. It works by building a list of to be flushed IOTLB entries and a bitmap list of which DMAR engine they are from. After either a high water mark (250 accessible via debugfs) or 10ms the list of iova's will be reclaimed and the DMAR engines associated are IOTLB-flushed. This approach recovers 15 to 20% of the performance lost when using the IOMMU for my netperf udp stream benchmark with small packets. It can be disabled with a kernel boot parameter "intel_iommu=strict". Its use does weaken the IOMMU protections a bit. Signed-off-by: Mark Gross <mgross@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci/iova.h')
-rw-r--r--drivers/pci/iova.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/pci/iova.h b/drivers/pci/iova.h
index 228f6c9..2f13178 100644
--- a/drivers/pci/iova.h
+++ b/drivers/pci/iova.h
@@ -24,6 +24,8 @@ struct iova {
struct rb_node node;
unsigned long pfn_hi; /* IOMMU dish out addr hi */
unsigned long pfn_lo; /* IOMMU dish out addr lo */
+ struct list_head list;
+ void *dmar;
};
/* holds all the iova translations for a domain */