IOMMU Identity Mapping Support (drivers/pci/intel_iommu.c)
authorFenghua Yu <fenghua.yu@intel.com>
Fri, 19 Jun 2009 20:47:29 +0000 (13:47 -0700)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Tue, 23 Jun 2009 21:07:54 +0000 (22:07 +0100)
commit2c2e2c389d03bb16b8cdf9db3ac615385fac100f
tree19af024e80adbbd1536aae0fa0c23ed4249834fe
parent687d680985b1438360a9ba470ece8b57cd205c3b
IOMMU Identity Mapping Support (drivers/pci/intel_iommu.c)

Identity mapping for IOMMU defines a single domain to 1:1 map all PCI
devices to all usable memory.

This reduces map/unmap overhead in DMA API's and improve IOMMU
performance. On 10Gb network cards, Netperf shows no performance
degradation compared to non-IOMMU performance.

This method may lose some of DMA remapping benefits like isolation.

The patch sets up identity mapping for all PCI devices to all usable
memory. In the DMA API, there is no overhead to maintain page tables,
invalidate iotlb, flush cache etc.

32 bit DMA devices don't use identity mapping domain, in order to access
memory beyond 4GiB.

When kernel option iommu=pt, pass through is first tried. If pass
through succeeds, IOMMU goes to pass through. If pass through is not
supported in hw or fail for whatever reason, IOMMU goes to identity
mapping.

Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/pci/intel-iommu.c