mirror of https://github.com/torvalds/linux.git
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>
|
||
|---|---|---|
| .. | ||
| reed_solomon | ||
| zlib_deflate | ||
| zlib_inflate | ||
| .gitignore | ||
| Kconfig | ||
| Kconfig.debug | ||
| Makefile | ||
| bitmap.c | ||
| bust_spinlocks.c | ||
| cmdline.c | ||
| crc-ccitt.c | ||
| crc16.c | ||
| crc32.c | ||
| crc32defs.h | ||
| ctype.c | ||
| dec_and_lock.c | ||
| div64.c | ||
| dump_stack.c | ||
| errno.c | ||
| extable.c | ||
| find_next_bit.c | ||
| gen_crc32table.c | ||
| genalloc.c | ||
| halfmd4.c | ||
| idr.c | ||
| inflate.c | ||
| int_sqrt.c | ||
| iomap.c | ||
| kernel_lock.c | ||
| klist.c | ||
| kobject.c | ||
| kobject_uevent.c | ||
| kref.c | ||
| libcrc32c.c | ||
| parser.c | ||
| prio_tree.c | ||
| radix-tree.c | ||
| rbtree.c | ||
| rwsem-spinlock.c | ||
| rwsem.c | ||
| semaphore-sleepers.c | ||
| sha1.c | ||
| smp_processor_id.c | ||
| sort.c | ||
| spinlock_debug.c | ||
| string.c | ||
| swiotlb.c | ||
| textsearch.c | ||
| ts_bm.c | ||
| ts_fsm.c | ||
| ts_kmp.c | ||
| vsprintf.c | ||