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
..
2005-04-16 15:20:36 -07:00
2005-06-21 18:46:12 -07:00
2005-08-25 12:40:44 -04:00
2005-06-07 12:35:43 -07:00
2006-01-11 19:04:54 -08:00
2005-09-12 10:49:56 -07:00
2006-01-09 15:59:17 -08:00
2005-09-07 16:57:21 -07:00
2006-01-11 19:04:50 -08:00
2005-04-16 15:20:36 -07:00
2005-05-01 08:58:51 -07:00
2005-09-12 10:50:58 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-01-08 20:13:39 -08:00
2006-01-06 08:33:36 -08:00
2005-09-12 10:50:56 -07:00
2005-08-29 16:02:48 -07:00
2006-01-11 19:04:53 -08:00
2005-04-16 15:20:36 -07:00
2005-05-01 08:58:49 -07:00
2005-04-16 15:20:36 -07:00
2005-09-09 21:28:48 +02:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-01-11 19:04:53 -08:00
2005-04-16 15:20:36 -07:00
2006-01-11 19:04:55 -08:00
2005-11-14 19:55:13 -08:00
2006-01-11 19:01:10 -08:00
2006-01-10 08:01:27 -08:00
2005-11-07 07:53:41 -08:00
2005-07-26 14:35:42 -07:00
2005-04-16 15:20:36 -07:00
2005-09-07 16:57:38 -07:00
2005-09-12 10:50:56 -07:00
2005-05-05 16:36:47 -07:00
2005-04-16 15:20:36 -07:00
2005-09-07 16:57:17 -07:00
2006-01-11 19:04:55 -08:00
2005-04-16 15:20:36 -07:00
2005-09-12 10:49:58 -07:00
2005-11-14 19:55:13 -08:00
2005-11-14 19:55:13 -08:00
2006-01-11 19:04:51 -08:00
2006-01-08 20:12:42 -08:00
2005-11-14 19:55:16 -08:00
2005-04-16 15:20:36 -07:00
2006-01-11 19:04:55 -08:00
2005-08-24 12:08:54 -04:00
2006-01-11 19:04:51 -08:00
2006-01-10 08:01:34 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-09-12 10:50:57 -07:00
2005-09-09 13:57:33 -07:00
2006-01-11 19:01:10 -08:00
2006-01-10 08:01:28 -08:00
2005-04-16 15:20:36 -07:00
2006-01-10 08:01:40 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-09-12 10:50:59 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-11-14 19:55:13 -08:00
2006-01-06 08:33:22 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-11-14 19:55:16 -08:00
2005-04-16 15:20:36 -07:00
2006-01-06 08:33:39 -08:00
2005-04-16 15:20:36 -07:00
2005-11-10 16:09:18 -08:00
2005-11-20 11:52:59 -08:00
2005-10-30 17:37:13 -08:00
2006-01-11 15:50:47 -08:00
2005-04-16 15:20:36 -07:00
2005-05-17 07:59:16 -07:00
2005-04-16 15:20:36 -07:00
2005-11-14 19:55:14 -08:00
2005-04-16 15:20:36 -07:00
2006-01-11 19:01:13 -08:00
2006-01-02 08:38:38 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-01-11 19:04:55 -08:00
2006-01-11 19:01:13 -08:00
2005-06-23 09:45:28 -07:00
2005-09-12 10:50:56 -07:00
2006-01-11 19:04:53 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-01-11 19:01:13 -08:00
2006-01-11 19:04:55 -08:00
2005-06-23 09:45:14 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-12-24 12:30:22 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-10-30 17:37:27 -08:00
2005-04-16 15:20:36 -07:00
2005-06-29 18:45:19 +01:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-05-01 08:59:08 -07:00
2005-09-12 10:50:56 -07:00
2005-11-14 19:56:02 -08:00
2005-08-29 15:31:35 -07:00
2005-04-16 15:20:36 -07:00
2005-06-23 09:45:07 -07:00
2005-09-10 10:06:21 -07:00
2005-11-14 19:55:15 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-06-25 16:24:33 -07:00
2006-01-11 19:04:55 -08:00
2006-01-11 19:04:50 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-01-11 19:04:53 -08:00
2005-09-12 10:49:58 -07:00
2005-04-16 15:20:36 -07:00
2005-09-12 10:49:58 -07:00
2005-12-24 12:30:22 -08:00
2005-09-05 00:05:48 -07:00
2005-09-07 16:57:35 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-01-08 20:12:42 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-09-12 10:50:57 -07:00
2005-04-16 15:20:36 -07:00