linux/drivers/pci
Fenghua Yu 2c2e2c389d 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>
2009-06-23 22:07:54 +01:00
..
hotplug Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-06-22 11:59:51 -07:00
pcie PCI ASPM: remove get_root_port_link 2009-06-18 14:02:23 -07:00
.gitignore
access.c PCI: Add pci_bus_set_ops 2009-06-16 14:29:33 -07:00
bus.c PCI AER: support Multiple Error Received and no error source id 2009-06-16 14:30:13 -07:00
dmar.c VT-d: add device IOTLB invalidation support 2009-05-18 14:45:13 +01:00
hotplug-pci.c
hotplug.c
htirq.c Merge branch 'x86/apic' into irq/numa 2009-05-12 12:17:36 +02:00
intel-iommu.c IOMMU Identity Mapping Support (drivers/pci/intel_iommu.c) 2009-06-23 22:07:54 +01:00
intr_remapping.c Merge git://git.infradead.org/~dwmw2/iommu-2.6.31 2009-06-22 21:38:22 -07:00
intr_remapping.h VT-d: Changes to support KVM 2008-10-15 14:24:08 +02:00
iov.c Merge git://git.infradead.org/~dwmw2/iommu-2.6.31 2009-06-22 21:38:22 -07:00
iova.c VT-d: Changes to support KVM 2008-10-15 14:24:08 +02:00
irq.c PCI: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-07 11:12:23 -08:00
Kconfig PCI: initialize and release SR-IOV capability 2009-03-20 10:48:22 -07:00
Makefile Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-06-22 11:59:51 -07:00
msi.c PCI: make msi_free_irqs() to use msix_mask_irq() instead of open coded write 2009-06-19 15:11:45 -07:00
msi.h PCI MSI: Define PCI_MSI_MASK_32/64 2009-06-11 12:04:06 -07:00
pci-acpi.c Merge branch 'linus' into release 2009-04-05 02:14:15 -04:00
pci-driver.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask 2009-04-05 10:33:07 -07:00
pci-stub.c PCI: pci-stub module to reserve pci device 2009-01-07 11:12:38 -08:00
pci-sysfs.c docbooks: add/fix PCI kernel-doc 2009-04-22 14:49:33 -07:00
pci.c Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-06-22 11:59:51 -07:00
pci.h PCI: handle Virtual Function ATS enabling 2009-05-18 11:25:58 +01:00
probe.c PCI: use pci_is_root_bus() in pci_read_bridge_bases() 2009-06-16 14:29:31 -07:00
proc.c PCI: define PCI resource names in an 'enum' 2009-01-07 11:13:01 -08:00
quirks.c Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-06-22 11:59:51 -07:00
remove.c PCI: eliminate redundant pci_stop_dev() call from pci_destroy_dev() 2009-06-11 12:04:19 -07:00
rom.c PCI: fix rom.c kernel-doc warning 2009-02-13 12:01:56 -08:00
search.c PCI: use pci_is_root_bus() in pci_find_upstream_pcie_bridge() 2009-06-16 14:29:30 -07:00
setup-bus.c PCI: improve resource allocation under transparent bridges 2009-06-11 12:04:07 -07:00
setup-irq.c
setup-res.c Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-06-22 11:59:51 -07:00
slot.c PCI hotplug: create symlink to hotplug driver module 2009-06-16 14:30:11 -07:00
syscall.c [CVE-2009-0029] System call wrappers part 26 2009-01-14 14:15:29 +01:00