linux/drivers
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
..
accessibility
acpi 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
amba
ata powerpc/5xxx: Add common mpc5xxx_get_bus_frequency() function 2009-06-17 00:30:22 -06:00
atm
auxdisplay
base Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
block hd: stop defining MAJOR_NR 2009-06-18 09:56:20 +02:00
bluetooth
cdrom
char tty: n_hdlc add buffer flushing 2009-06-22 11:32:24 -07:00
clocksource Merge branches 'sh/pci-express-integration', 'sh/rsk-updates', 'sh/platform-updates' and 'sh/perf_counter' 2009-06-17 16:37:26 +09:00
connector
cpufreq
cpuidle
crypto crypto: padlock-aes - work around Nano CPU errata in CBC mode 2009-06-18 19:31:09 +08:00
dca
dio
dma DMA: TXx9 Soc DMA Controller driver 2009-06-17 11:06:25 +01:00
edac edac: Kconfig: fix the meaning of EDAC abbreviation 2009-06-18 13:03:57 -07:00
eisa Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-06-22 21:29:52 -07:00
firmware Pull for-2.6.31 into release 2009-06-17 09:35:24 -07:00
gpio gpio: driver for PrimeCell PL061 GPIO controller 2009-06-19 16:46:03 -07:00
gpu drm/i915: enable GEM on PAE. 2009-06-19 10:29:20 +10:00
hid
hwmon Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
i2c i2c: Fix stuck transaction on cpm-i2c driver 2009-06-22 01:43:32 +01:00
ide Merge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 2009-06-20 10:11:11 -07:00
idle
ieee1394 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-06-22 21:29:52 -07:00
ieee802154
infiniband
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2009-06-20 10:17:02 -07:00
isdn net: fix network drivers ndo_start_xmit() return values 2009-06-17 04:31:16 -07:00
leds
lguest
macintosh
mca
md Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block 2009-06-19 17:43:04 -07:00
media soc-camera: unify i2c camera device platform data 2009-06-17 16:22:34 +09:00
memstick
message convert some DMA_nnBIT_MASK() callers 2009-06-19 16:46:06 -07:00
mfd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2009-06-20 10:17:02 -07:00
misc gru: copyright fixes 2009-06-18 13:04:04 -07:00
mmc sdhci: remove needless double parenthesis 2009-06-21 21:01:00 +02:00
mtd Merge git://git.infradead.org/mtd-2.6 2009-06-22 16:56:22 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/czankel/xtensa-2.6 2009-06-22 12:38:31 -07:00
nubus
of
oprofile
parisc
parport parport_pc: set properly the dma_mask for parport_pc device 2009-06-22 11:29:00 -07:00
pci IOMMU Identity Mapping Support (drivers/pci/intel_iommu.c) 2009-06-23 22:07:54 +01:00
pcmcia Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
platform acer-wmi: fix rfkill conversion 2009-06-19 11:50:18 -04:00
pnp
power
pps LinuxPPS: core support 2009-06-18 13:04:04 -07:00
ps3
rapidio
regulator
rtc rtc: make rtc_update_irq callable with irqs enabled 2009-06-19 16:46:05 -07:00
s390 [S390] dasd: fix refcounting in dasd_change_state 2009-06-22 12:08:23 +02:00
sbus
scsi Merge commit 'origin/master' into next 2009-06-18 11:16:55 +10:00
serial msm: fixups to match current code 2009-06-22 11:32:25 -07:00
sh
sn
spi spi_mpc8xxx: s/83xx/8xxx/g 2009-06-19 16:46:05 -07:00
ssb
staging tty: fix some bogns in the serqt_usb2 driver 2009-06-22 11:32:24 -07:00
tc
telephony
thermal
uio
usb Merge commit 'origin/master' into next 2009-06-18 11:16:55 +10:00
uwb
video Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2009-06-19 17:40:40 -07:00
virtio
vlynq drivers: add support for the TI VLYNQ bus 2009-06-16 19:47:52 -07:00
w1 w1-gpio: add external pull-up enable callback 2009-06-18 13:03:58 -07:00
watchdog Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2009-06-19 17:40:40 -07:00
xen
zorro
Kconfig LinuxPPS: core support 2009-06-18 13:04:04 -07:00
Makefile LinuxPPS: core support 2009-06-18 13:04:04 -07:00