• Muli Ben-Yehuda's avatar
    [PATCH] x86_64: Use function pointers to call DMA mapping functions · 17a941d8
    Muli Ben-Yehuda authored
    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: default avatarMuli Ben-Yehuda <mulix@mulix.org>
    Signed-Off-By: default avatarJon D. Mason <jdmason@us.ibm.com>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    17a941d8
Name
Last commit
Last update
..
reed_solomon Loading commit data...
zlib_deflate Loading commit data...
zlib_inflate Loading commit data...
.gitignore Loading commit data...
Kconfig Loading commit data...
Kconfig.debug Loading commit data...
Makefile Loading commit data...
bitmap.c Loading commit data...
bust_spinlocks.c Loading commit data...
cmdline.c Loading commit data...
crc-ccitt.c Loading commit data...
crc16.c Loading commit data...
crc32.c Loading commit data...
crc32defs.h Loading commit data...
ctype.c Loading commit data...
dec_and_lock.c Loading commit data...
div64.c Loading commit data...
dump_stack.c Loading commit data...
errno.c Loading commit data...
extable.c Loading commit data...
find_next_bit.c Loading commit data...
gen_crc32table.c Loading commit data...
genalloc.c Loading commit data...
halfmd4.c Loading commit data...
idr.c Loading commit data...
inflate.c Loading commit data...
int_sqrt.c Loading commit data...
iomap.c Loading commit data...
kernel_lock.c Loading commit data...
klist.c Loading commit data...
kobject.c Loading commit data...
kobject_uevent.c Loading commit data...
kref.c Loading commit data...
libcrc32c.c Loading commit data...
parser.c Loading commit data...
prio_tree.c Loading commit data...
radix-tree.c Loading commit data...
rbtree.c Loading commit data...
rwsem-spinlock.c Loading commit data...
rwsem.c Loading commit data...
semaphore-sleepers.c Loading commit data...
sha1.c Loading commit data...
smp_processor_id.c Loading commit data...
sort.c Loading commit data...
spinlock_debug.c Loading commit data...
string.c Loading commit data...
swiotlb.c Loading commit data...
textsearch.c Loading commit data...
ts_bm.c Loading commit data...
ts_fsm.c Loading commit data...
ts_kmp.c Loading commit data...
vsprintf.c Loading commit data...