linux/lib
Muli Ben-Yehuda 17a941d854 [PATCH] x86_64: Use function pointers to call DMA mapping functions
AK: I hacked Muli's original patch a lot and there were a lot
of changes - all bugs are probably to blame on me now.
There were also some changes in the fall back behaviour
for swiotlb - in particular it doesn't try to use GFP_DMA
now anymore. Also all DMA mapping operations use the
same core dma_alloc_coherent code with proper fallbacks now.
And various other changes and cleanups.

Known problems: iommu=force swiotlb=force together breaks
                needs more testing.

This patch cleans up x86_64's DMA mapping dispatching code. Right now
we have three possible IOMMU types: AGP GART, swiotlb and nommu, and
in the future we will also have Xen's x86_64 swiotlb and other HW
IOMMUs for x86_64. In order to support all of them cleanly, this
patch:

- introduces a struct dma_mapping_ops with function pointers for each
  of the DMA mapping operations of gart (AMD HW IOMMU), swiotlb
  (software IOMMU) and nommu (no IOMMU).

- gets rid of:

  if (swiotlb)
      return swiotlb_xxx();

- PCI_DMA_BUS_IS_PHYS is now checked against the dma_ops being set
This makes swiotlb faster by avoiding double copying in some cases.

Signed-Off-By: Muli Ben-Yehuda <mulix@mulix.org>
Signed-Off-By: Jon D. Mason <jdmason@us.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-11 19:04:55 -08:00
..
reed_solomon
zlib_deflate [PATCH] lib/zlib*: cleanups 2006-01-10 08:01:57 -08:00
zlib_inflate [PATCH] lib/zlib*: cleanups 2006-01-10 08:01:57 -08:00
.gitignore
bitmap.c [PATCH] cpuset: better bitmap remap defaults 2006-01-08 20:13:42 -08:00
bust_spinlocks.c
cmdline.c
crc16.c
crc32.c
crc32defs.h
crc-ccitt.c
ctype.c
dec_and_lock.c [PATCH] atomic: dec_and_lock use atomic primitives 2006-01-08 20:13:48 -08:00
div64.c
dump_stack.c
errno.c
extable.c
find_next_bit.c [PATCH] frv: implement and export various things required by modules 2006-01-08 20:13:36 -08:00
gen_crc32table.c
genalloc.c [PATCH] fix broken lib/genalloc.c 2005-11-28 14:42:23 -08:00
halfmd4.c
idr.c
inflate.c
int_sqrt.c
iomap.c
Kconfig
Kconfig.debug [PATCH] let MAGIC_SYSRQ no longer depend on DEBUG_KERNEL 2006-01-10 08:02:02 -08:00
kernel_lock.c
klist.c [PATCH] klist: Fix broken kref counting in find functions 2006-01-04 16:18:08 -08:00
kobject_uevent.c [PATCH] kobject_uevent CONFIG_NET=n fix 2006-01-04 16:18:08 -08:00
kobject.c [PATCH] driver core: replace "hotplug" by "uevent" 2006-01-04 16:18:08 -08:00
kref.c
libcrc32c.c
Makefile
parser.c
prio_tree.c
radix-tree.c [PATCH] radix-tree: reduce tree height upon partial truncation 2006-01-08 20:13:41 -08:00
rbtree.c
rwsem-spinlock.c
rwsem.c
semaphore-sleepers.c
sha1.c
smp_processor_id.c
sort.c
spinlock_debug.c [PATCH] printk levels for spinlock debug 2006-01-10 08:01:24 -08:00
string.c
swiotlb.c [PATCH] x86_64: Use function pointers to call DMA mapping functions 2006-01-11 19:04:55 -08:00
textsearch.c
ts_bm.c
ts_fsm.c
ts_kmp.c
vsprintf.c