diff options
author | Krzysztof Kozlowski <k.kozlowski@samsung.com> | 2016-08-03 16:46:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-08-04 08:50:07 -0400 |
commit | 00085f1efa387a8ce100e3734920f7639c80caa3 (patch) | |
tree | 41ff3d6e6884918b4fc4f1ae96a284098167c5b0 /arch/powerpc | |
parent | 1605d2715ad2e67ddd0485a26e05ed670a4285ca (diff) |
dma-mapping: use unsigned long for dma_attrs
The dma-mapping core and the implementations do not change the DMA
attributes passed by pointer. Thus the pointer can point to const data.
However the attributes do not have to be a bitfield. Instead unsigned
long will do fine:
1. This is just simpler. Both in terms of reading the code and setting
attributes. Instead of initializing local attributes on the stack
and passing pointer to it to dma_set_attr(), just set the bits.
2. It brings safeness and checking for const correctness because the
attributes are passed by value.
Semantic patches for this change (at least most of them):
virtual patch
virtual context
@r@
identifier f, attrs;
@@
f(...,
- struct dma_attrs *attrs
+ unsigned long attrs
, ...)
{
...
}
@@
identifier r.f;
@@
f(...,
- NULL
+ 0
)
and
// Options: --all-includes
virtual patch
virtual context
@r@
identifier f, attrs;
type t;
@@
t f(..., struct dma_attrs *attrs);
@@
identifier r.f;
@@
f(...,
- NULL
+ 0
)
Link: http://lkml.kernel.org/r/1468399300-5399-2-git-send-email-k.kozlowski@samsung.com
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Acked-by: Vineet Gupta <vgupta@synopsys.com>
Acked-by: Robin Murphy <robin.murphy@arm.com>
Acked-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no>
Acked-by: Mark Salter <msalter@redhat.com> [c6x]
Acked-by: Jesper Nilsson <jesper.nilsson@axis.com> [cris]
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> [drm]
Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
Acked-by: Joerg Roedel <jroedel@suse.de> [iommu]
Acked-by: Fabien Dessenne <fabien.dessenne@st.com> [bdisp]
Reviewed-by: Marek Szyprowski <m.szyprowski@samsung.com> [vb2-core]
Acked-by: David Vrabel <david.vrabel@citrix.com> [xen]
Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> [xen swiotlb]
Acked-by: Joerg Roedel <jroedel@suse.de> [iommu]
Acked-by: Richard Kuo <rkuo@codeaurora.org> [hexagon]
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> [m68k]
Acked-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> [s390]
Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Acked-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no> [avr32]
Acked-by: Vineet Gupta <vgupta@synopsys.com> [arc]
Acked-by: Robin Murphy <robin.murphy@arm.com> [arm64 and dma-iommu]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/include/asm/dma-mapping.h | 7 | ||||
-rw-r--r-- | arch/powerpc/include/asm/iommu.h | 10 | ||||
-rw-r--r-- | arch/powerpc/kernel/dma-iommu.c | 12 | ||||
-rw-r--r-- | arch/powerpc/kernel/dma.c | 18 | ||||
-rw-r--r-- | arch/powerpc/kernel/ibmebus.c | 12 | ||||
-rw-r--r-- | arch/powerpc/kernel/iommu.c | 12 | ||||
-rw-r--r-- | arch/powerpc/kernel/vio.c | 12 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/iommu.c | 28 | ||||
-rw-r--r-- | arch/powerpc/platforms/pasemi/iommu.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/powernv/npu-dma.c | 8 | ||||
-rw-r--r-- | arch/powerpc/platforms/powernv/pci-ioda.c | 4 | ||||
-rw-r--r-- | arch/powerpc/platforms/powernv/pci.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/powernv/pci.h | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/ps3/system-bus.c | 18 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/iommu.c | 6 | ||||
-rw-r--r-- | arch/powerpc/sysdev/dart_iommu.c | 2 |
16 files changed, 77 insertions, 78 deletions
diff --git a/arch/powerpc/include/asm/dma-mapping.h b/arch/powerpc/include/asm/dma-mapping.h index 77816acd4fd9..84e3f8dd5e4f 100644 --- a/arch/powerpc/include/asm/dma-mapping.h +++ b/arch/powerpc/include/asm/dma-mapping.h | |||
@@ -13,7 +13,6 @@ | |||
13 | /* need struct page definitions */ | 13 | /* need struct page definitions */ |
14 | #include <linux/mm.h> | 14 | #include <linux/mm.h> |
15 | #include <linux/scatterlist.h> | 15 | #include <linux/scatterlist.h> |
16 | #include <linux/dma-attrs.h> | ||
17 | #include <linux/dma-debug.h> | 16 | #include <linux/dma-debug.h> |
18 | #include <asm/io.h> | 17 | #include <asm/io.h> |
19 | #include <asm/swiotlb.h> | 18 | #include <asm/swiotlb.h> |
@@ -25,14 +24,14 @@ | |||
25 | /* Some dma direct funcs must be visible for use in other dma_ops */ | 24 | /* Some dma direct funcs must be visible for use in other dma_ops */ |
26 | extern void *__dma_direct_alloc_coherent(struct device *dev, size_t size, | 25 | extern void *__dma_direct_alloc_coherent(struct device *dev, size_t size, |
27 | dma_addr_t *dma_handle, gfp_t flag, | 26 | dma_addr_t *dma_handle, gfp_t flag, |
28 | struct dma_attrs *attrs); | 27 | unsigned long attrs); |
29 | extern void __dma_direct_free_coherent(struct device *dev, size_t size, | 28 | extern void __dma_direct_free_coherent(struct device *dev, size_t size, |
30 | void *vaddr, dma_addr_t dma_handle, | 29 | void *vaddr, dma_addr_t dma_handle, |
31 | struct dma_attrs *attrs); | 30 | unsigned long attrs); |
32 | extern int dma_direct_mmap_coherent(struct device *dev, | 31 | extern int dma_direct_mmap_coherent(struct device *dev, |
33 | struct vm_area_struct *vma, | 32 | struct vm_area_struct *vma, |
34 | void *cpu_addr, dma_addr_t handle, | 33 | void *cpu_addr, dma_addr_t handle, |
35 | size_t size, struct dma_attrs *attrs); | 34 | size_t size, unsigned long attrs); |
36 | 35 | ||
37 | #ifdef CONFIG_NOT_COHERENT_CACHE | 36 | #ifdef CONFIG_NOT_COHERENT_CACHE |
38 | /* | 37 | /* |
diff --git a/arch/powerpc/include/asm/iommu.h b/arch/powerpc/include/asm/iommu.h index f49a72a9062d..2c1d50792944 100644 --- a/arch/powerpc/include/asm/iommu.h +++ b/arch/powerpc/include/asm/iommu.h | |||
@@ -53,7 +53,7 @@ struct iommu_table_ops { | |||
53 | long index, long npages, | 53 | long index, long npages, |
54 | unsigned long uaddr, | 54 | unsigned long uaddr, |
55 | enum dma_data_direction direction, | 55 | enum dma_data_direction direction, |
56 | struct dma_attrs *attrs); | 56 | unsigned long attrs); |
57 | #ifdef CONFIG_IOMMU_API | 57 | #ifdef CONFIG_IOMMU_API |
58 | /* | 58 | /* |
59 | * Exchanges existing TCE with new TCE plus direction bits; | 59 | * Exchanges existing TCE with new TCE plus direction bits; |
@@ -248,12 +248,12 @@ extern int ppc_iommu_map_sg(struct device *dev, struct iommu_table *tbl, | |||
248 | struct scatterlist *sglist, int nelems, | 248 | struct scatterlist *sglist, int nelems, |
249 | unsigned long mask, | 249 | unsigned long mask, |
250 | enum dma_data_direction direction, | 250 | enum dma_data_direction direction, |
251 | struct dma_attrs *attrs); | 251 | unsigned long attrs); |
252 | extern void ppc_iommu_unmap_sg(struct iommu_table *tbl, | 252 | extern void ppc_iommu_unmap_sg(struct iommu_table *tbl, |
253 | struct scatterlist *sglist, | 253 | struct scatterlist *sglist, |
254 | int nelems, | 254 | int nelems, |
255 | enum dma_data_direction direction, | 255 | enum dma_data_direction direction, |
256 | struct dma_attrs *attrs); | 256 | unsigned long attrs); |
257 | 257 | ||
258 | extern void *iommu_alloc_coherent(struct device *dev, struct iommu_table *tbl, | 258 | extern void *iommu_alloc_coherent(struct device *dev, struct iommu_table *tbl, |
259 | size_t size, dma_addr_t *dma_handle, | 259 | size_t size, dma_addr_t *dma_handle, |
@@ -264,10 +264,10 @@ extern dma_addr_t iommu_map_page(struct device *dev, struct iommu_table *tbl, | |||
264 | struct page *page, unsigned long offset, | 264 | struct page *page, unsigned long offset, |
265 | size_t size, unsigned long mask, | 265 | size_t size, unsigned long mask, |
266 | enum dma_data_direction direction, | 266 | enum dma_data_direction direction, |
267 | struct dma_attrs *attrs); | 267 | unsigned long attrs); |
268 | extern void iommu_unmap_page(struct iommu_table *tbl, dma_addr_t dma_handle, | 268 | extern void iommu_unmap_page(struct iommu_table *tbl, dma_addr_t dma_handle, |
269 | size_t size, enum dma_data_direction direction, | 269 | size_t size, enum dma_data_direction direction, |
270 | struct dma_attrs *attrs); | 270 | unsigned long attrs); |
271 | 271 | ||
272 | extern void iommu_init_early_pSeries(void); | 272 | extern void iommu_init_early_pSeries(void); |
273 | extern void iommu_init_early_dart(struct pci_controller_ops *controller_ops); | 273 | extern void iommu_init_early_dart(struct pci_controller_ops *controller_ops); |
diff --git a/arch/powerpc/kernel/dma-iommu.c b/arch/powerpc/kernel/dma-iommu.c index 41a7d9d49a5a..fb7cbaa37658 100644 --- a/arch/powerpc/kernel/dma-iommu.c +++ b/arch/powerpc/kernel/dma-iommu.c | |||
@@ -18,7 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | static void *dma_iommu_alloc_coherent(struct device *dev, size_t size, | 19 | static void *dma_iommu_alloc_coherent(struct device *dev, size_t size, |
20 | dma_addr_t *dma_handle, gfp_t flag, | 20 | dma_addr_t *dma_handle, gfp_t flag, |
21 | struct dma_attrs *attrs) | 21 | unsigned long attrs) |
22 | { | 22 | { |
23 | return iommu_alloc_coherent(dev, get_iommu_table_base(dev), size, | 23 | return iommu_alloc_coherent(dev, get_iommu_table_base(dev), size, |
24 | dma_handle, dev->coherent_dma_mask, flag, | 24 | dma_handle, dev->coherent_dma_mask, flag, |
@@ -27,7 +27,7 @@ static void *dma_iommu_alloc_coherent(struct device *dev, size_t size, | |||
27 | 27 | ||
28 | static void dma_iommu_free_coherent(struct device *dev, size_t size, | 28 | static void dma_iommu_free_coherent(struct device *dev, size_t size, |
29 | void *vaddr, dma_addr_t dma_handle, | 29 | void *vaddr, dma_addr_t dma_handle, |
30 | struct dma_attrs *attrs) | 30 | unsigned long attrs) |
31 | { | 31 | { |
32 | iommu_free_coherent(get_iommu_table_base(dev), size, vaddr, dma_handle); | 32 | iommu_free_coherent(get_iommu_table_base(dev), size, vaddr, dma_handle); |
33 | } | 33 | } |
@@ -40,7 +40,7 @@ static void dma_iommu_free_coherent(struct device *dev, size_t size, | |||
40 | static dma_addr_t dma_iommu_map_page(struct device *dev, struct page *page, | 40 | static dma_addr_t dma_iommu_map_page(struct device *dev, struct page *page, |
41 | unsigned long offset, size_t size, | 41 | unsigned long offset, size_t size, |
42 | enum dma_data_direction direction, | 42 | enum dma_data_direction direction, |
43 | struct dma_attrs *attrs) | 43 | unsigned long attrs) |
44 | { | 44 | { |
45 | return iommu_map_page(dev, get_iommu_table_base(dev), page, offset, | 45 | return iommu_map_page(dev, get_iommu_table_base(dev), page, offset, |
46 | size, device_to_mask(dev), direction, attrs); | 46 | size, device_to_mask(dev), direction, attrs); |
@@ -49,7 +49,7 @@ static dma_addr_t dma_iommu_map_page(struct device *dev, struct page *page, | |||
49 | 49 | ||
50 | static void dma_iommu_unmap_page(struct device *dev, dma_addr_t dma_handle, | 50 | static void dma_iommu_unmap_page(struct device *dev, dma_addr_t dma_handle, |
51 | size_t size, enum dma_data_direction direction, | 51 | size_t size, enum dma_data_direction direction, |
52 | struct dma_attrs *attrs) | 52 | unsigned long attrs) |
53 | { | 53 | { |
54 | iommu_unmap_page(get_iommu_table_base(dev), dma_handle, size, direction, | 54 | iommu_unmap_page(get_iommu_table_base(dev), dma_handle, size, direction, |
55 | attrs); | 55 | attrs); |
@@ -58,7 +58,7 @@ static void dma_iommu_unmap_page(struct device *dev, dma_addr_t dma_handle, | |||
58 | 58 | ||
59 | static int dma_iommu_map_sg(struct device *dev, struct scatterlist *sglist, | 59 | static int dma_iommu_map_sg(struct device *dev, struct scatterlist *sglist, |
60 | int nelems, enum dma_data_direction direction, | 60 | int nelems, enum dma_data_direction direction, |
61 | struct dma_attrs *attrs) | 61 | unsigned long attrs) |
62 | { | 62 | { |
63 | return ppc_iommu_map_sg(dev, get_iommu_table_base(dev), sglist, nelems, | 63 | return ppc_iommu_map_sg(dev, get_iommu_table_base(dev), sglist, nelems, |
64 | device_to_mask(dev), direction, attrs); | 64 | device_to_mask(dev), direction, attrs); |
@@ -66,7 +66,7 @@ static int dma_iommu_map_sg(struct device *dev, struct scatterlist *sglist, | |||
66 | 66 | ||
67 | static void dma_iommu_unmap_sg(struct device *dev, struct scatterlist *sglist, | 67 | static void dma_iommu_unmap_sg(struct device *dev, struct scatterlist *sglist, |
68 | int nelems, enum dma_data_direction direction, | 68 | int nelems, enum dma_data_direction direction, |
69 | struct dma_attrs *attrs) | 69 | unsigned long attrs) |
70 | { | 70 | { |
71 | ppc_iommu_unmap_sg(get_iommu_table_base(dev), sglist, nelems, | 71 | ppc_iommu_unmap_sg(get_iommu_table_base(dev), sglist, nelems, |
72 | direction, attrs); | 72 | direction, attrs); |
diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index 3f1472a78f39..e64a6016fba7 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c | |||
@@ -64,7 +64,7 @@ static int dma_direct_dma_supported(struct device *dev, u64 mask) | |||
64 | 64 | ||
65 | void *__dma_direct_alloc_coherent(struct device *dev, size_t size, | 65 | void *__dma_direct_alloc_coherent(struct device *dev, size_t size, |
66 | dma_addr_t *dma_handle, gfp_t flag, | 66 | dma_addr_t *dma_handle, gfp_t flag, |
67 | struct dma_attrs *attrs) | 67 | unsigned long attrs) |
68 | { | 68 | { |
69 | void *ret; | 69 | void *ret; |
70 | #ifdef CONFIG_NOT_COHERENT_CACHE | 70 | #ifdef CONFIG_NOT_COHERENT_CACHE |
@@ -121,7 +121,7 @@ void *__dma_direct_alloc_coherent(struct device *dev, size_t size, | |||
121 | 121 | ||
122 | void __dma_direct_free_coherent(struct device *dev, size_t size, | 122 | void __dma_direct_free_coherent(struct device *dev, size_t size, |
123 | void *vaddr, dma_addr_t dma_handle, | 123 | void *vaddr, dma_addr_t dma_handle, |
124 | struct dma_attrs *attrs) | 124 | unsigned long attrs) |
125 | { | 125 | { |
126 | #ifdef CONFIG_NOT_COHERENT_CACHE | 126 | #ifdef CONFIG_NOT_COHERENT_CACHE |
127 | __dma_free_coherent(size, vaddr); | 127 | __dma_free_coherent(size, vaddr); |
@@ -132,7 +132,7 @@ void __dma_direct_free_coherent(struct device *dev, size_t size, | |||
132 | 132 | ||
133 | static void *dma_direct_alloc_coherent(struct device *dev, size_t size, | 133 | static void *dma_direct_alloc_coherent(struct device *dev, size_t size, |
134 | dma_addr_t *dma_handle, gfp_t flag, | 134 | dma_addr_t *dma_handle, gfp_t flag, |
135 | struct dma_attrs *attrs) | 135 | unsigned long attrs) |
136 | { | 136 | { |
137 | struct iommu_table *iommu; | 137 | struct iommu_table *iommu; |
138 | 138 | ||
@@ -156,7 +156,7 @@ static void *dma_direct_alloc_coherent(struct device *dev, size_t size, | |||
156 | 156 | ||
157 | static void dma_direct_free_coherent(struct device *dev, size_t size, | 157 | static void dma_direct_free_coherent(struct device *dev, size_t size, |
158 | void *vaddr, dma_addr_t dma_handle, | 158 | void *vaddr, dma_addr_t dma_handle, |
159 | struct dma_attrs *attrs) | 159 | unsigned long attrs) |
160 | { | 160 | { |
161 | struct iommu_table *iommu; | 161 | struct iommu_table *iommu; |
162 | 162 | ||
@@ -177,7 +177,7 @@ static void dma_direct_free_coherent(struct device *dev, size_t size, | |||
177 | 177 | ||
178 | int dma_direct_mmap_coherent(struct device *dev, struct vm_area_struct *vma, | 178 | int dma_direct_mmap_coherent(struct device *dev, struct vm_area_struct *vma, |
179 | void *cpu_addr, dma_addr_t handle, size_t size, | 179 | void *cpu_addr, dma_addr_t handle, size_t size, |
180 | struct dma_attrs *attrs) | 180 | unsigned long attrs) |
181 | { | 181 | { |
182 | unsigned long pfn; | 182 | unsigned long pfn; |
183 | 183 | ||
@@ -195,7 +195,7 @@ int dma_direct_mmap_coherent(struct device *dev, struct vm_area_struct *vma, | |||
195 | 195 | ||
196 | static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, | 196 | static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, |
197 | int nents, enum dma_data_direction direction, | 197 | int nents, enum dma_data_direction direction, |
198 | struct dma_attrs *attrs) | 198 | unsigned long attrs) |
199 | { | 199 | { |
200 | struct scatterlist *sg; | 200 | struct scatterlist *sg; |
201 | int i; | 201 | int i; |
@@ -211,7 +211,7 @@ static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, | |||
211 | 211 | ||
212 | static void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sg, | 212 | static void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sg, |
213 | int nents, enum dma_data_direction direction, | 213 | int nents, enum dma_data_direction direction, |
214 | struct dma_attrs *attrs) | 214 | unsigned long attrs) |
215 | { | 215 | { |
216 | } | 216 | } |
217 | 217 | ||
@@ -232,7 +232,7 @@ static inline dma_addr_t dma_direct_map_page(struct device *dev, | |||
232 | unsigned long offset, | 232 | unsigned long offset, |
233 | size_t size, | 233 | size_t size, |
234 | enum dma_data_direction dir, | 234 | enum dma_data_direction dir, |
235 | struct dma_attrs *attrs) | 235 | unsigned long attrs) |
236 | { | 236 | { |
237 | BUG_ON(dir == DMA_NONE); | 237 | BUG_ON(dir == DMA_NONE); |
238 | __dma_sync_page(page, offset, size, dir); | 238 | __dma_sync_page(page, offset, size, dir); |
@@ -243,7 +243,7 @@ static inline void dma_direct_unmap_page(struct device *dev, | |||
243 | dma_addr_t dma_address, | 243 | dma_addr_t dma_address, |
244 | size_t size, | 244 | size_t size, |
245 | enum dma_data_direction direction, | 245 | enum dma_data_direction direction, |
246 | struct dma_attrs *attrs) | 246 | unsigned long attrs) |
247 | { | 247 | { |
248 | } | 248 | } |
249 | 249 | ||
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c index a89f4f7a66bd..c1ca9282f4a0 100644 --- a/arch/powerpc/kernel/ibmebus.c +++ b/arch/powerpc/kernel/ibmebus.c | |||
@@ -65,7 +65,7 @@ static void *ibmebus_alloc_coherent(struct device *dev, | |||
65 | size_t size, | 65 | size_t size, |
66 | dma_addr_t *dma_handle, | 66 | dma_addr_t *dma_handle, |
67 | gfp_t flag, | 67 | gfp_t flag, |
68 | struct dma_attrs *attrs) | 68 | unsigned long attrs) |
69 | { | 69 | { |
70 | void *mem; | 70 | void *mem; |
71 | 71 | ||
@@ -78,7 +78,7 @@ static void *ibmebus_alloc_coherent(struct device *dev, | |||
78 | static void ibmebus_free_coherent(struct device *dev, | 78 | static void ibmebus_free_coherent(struct device *dev, |
79 | size_t size, void *vaddr, | 79 | size_t size, void *vaddr, |
80 | dma_addr_t dma_handle, | 80 | dma_addr_t dma_handle, |
81 | struct dma_attrs *attrs) | 81 | unsigned long attrs) |
82 | { | 82 | { |
83 | kfree(vaddr); | 83 | kfree(vaddr); |
84 | } | 84 | } |
@@ -88,7 +88,7 @@ static dma_addr_t ibmebus_map_page(struct device *dev, | |||
88 | unsigned long offset, | 88 | unsigned long offset, |
89 | size_t size, | 89 | size_t size, |
90 | enum dma_data_direction direction, | 90 | enum dma_data_direction direction, |
91 | struct dma_attrs *attrs) | 91 | unsigned long attrs) |
92 | { | 92 | { |
93 | return (dma_addr_t)(page_address(page) + offset); | 93 | return (dma_addr_t)(page_address(page) + offset); |
94 | } | 94 | } |
@@ -97,7 +97,7 @@ static void ibmebus_unmap_page(struct device *dev, | |||
97 | dma_addr_t dma_addr, | 97 | dma_addr_t dma_addr, |
98 | size_t size, | 98 | size_t size, |
99 | enum dma_data_direction direction, | 99 | enum dma_data_direction direction, |
100 | struct dma_attrs *attrs) | 100 | unsigned long attrs) |
101 | { | 101 | { |
102 | return; | 102 | return; |
103 | } | 103 | } |
@@ -105,7 +105,7 @@ static void ibmebus_unmap_page(struct device *dev, | |||
105 | static int ibmebus_map_sg(struct device *dev, | 105 | static int ibmebus_map_sg(struct device *dev, |
106 | struct scatterlist *sgl, | 106 | struct scatterlist *sgl, |
107 | int nents, enum dma_data_direction direction, | 107 | int nents, enum dma_data_direction direction, |
108 | struct dma_attrs *attrs) | 108 | unsigned long attrs) |
109 | { | 109 | { |
110 | struct scatterlist *sg; | 110 | struct scatterlist *sg; |
111 | int i; | 111 | int i; |
@@ -121,7 +121,7 @@ static int ibmebus_map_sg(struct device *dev, | |||
121 | static void ibmebus_unmap_sg(struct device *dev, | 121 | static void ibmebus_unmap_sg(struct device *dev, |
122 | struct scatterlist *sg, | 122 | struct scatterlist *sg, |
123 | int nents, enum dma_data_direction direction, | 123 | int nents, enum dma_data_direction direction, |
124 | struct dma_attrs *attrs) | 124 | unsigned long attrs) |
125 | { | 125 | { |
126 | return; | 126 | return; |
127 | } | 127 | } |
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c index a8e3490b54e3..37d6e741be82 100644 --- a/arch/powerpc/kernel/iommu.c +++ b/arch/powerpc/kernel/iommu.c | |||
@@ -307,7 +307,7 @@ static dma_addr_t iommu_alloc(struct device *dev, struct iommu_table *tbl, | |||
307 | void *page, unsigned int npages, | 307 | void *page, unsigned int npages, |
308 | enum dma_data_direction direction, | 308 | enum dma_data_direction direction, |
309 | unsigned long mask, unsigned int align_order, | 309 | unsigned long mask, unsigned int align_order, |
310 | struct dma_attrs *attrs) | 310 | unsigned long attrs) |
311 | { | 311 | { |
312 | unsigned long entry; | 312 | unsigned long entry; |
313 | dma_addr_t ret = DMA_ERROR_CODE; | 313 | dma_addr_t ret = DMA_ERROR_CODE; |
@@ -431,7 +431,7 @@ static void iommu_free(struct iommu_table *tbl, dma_addr_t dma_addr, | |||
431 | int ppc_iommu_map_sg(struct device *dev, struct iommu_table *tbl, | 431 | int ppc_iommu_map_sg(struct device *dev, struct iommu_table *tbl, |
432 | struct scatterlist *sglist, int nelems, | 432 | struct scatterlist *sglist, int nelems, |
433 | unsigned long mask, enum dma_data_direction direction, | 433 | unsigned long mask, enum dma_data_direction direction, |
434 | struct dma_attrs *attrs) | 434 | unsigned long attrs) |
435 | { | 435 | { |
436 | dma_addr_t dma_next = 0, dma_addr; | 436 | dma_addr_t dma_next = 0, dma_addr; |
437 | struct scatterlist *s, *outs, *segstart; | 437 | struct scatterlist *s, *outs, *segstart; |
@@ -574,7 +574,7 @@ int ppc_iommu_map_sg(struct device *dev, struct iommu_table *tbl, | |||
574 | 574 | ||
575 | void ppc_iommu_unmap_sg(struct iommu_table *tbl, struct scatterlist *sglist, | 575 | void ppc_iommu_unmap_sg(struct iommu_table *tbl, struct scatterlist *sglist, |
576 | int nelems, enum dma_data_direction direction, | 576 | int nelems, enum dma_data_direction direction, |
577 | struct dma_attrs *attrs) | 577 | unsigned long attrs) |
578 | { | 578 | { |
579 | struct scatterlist *sg; | 579 | struct scatterlist *sg; |
580 | 580 | ||
@@ -753,7 +753,7 @@ void iommu_free_table(struct iommu_table *tbl, const char *node_name) | |||
753 | dma_addr_t iommu_map_page(struct device *dev, struct iommu_table *tbl, | 753 | dma_addr_t iommu_map_page(struct device *dev, struct iommu_table *tbl, |
754 | struct page *page, unsigned long offset, size_t size, | 754 | struct page *page, unsigned long offset, size_t size, |
755 | unsigned long mask, enum dma_data_direction direction, | 755 | unsigned long mask, enum dma_data_direction direction, |
756 | struct dma_attrs *attrs) | 756 | unsigned long attrs) |
757 | { | 757 | { |
758 | dma_addr_t dma_handle = DMA_ERROR_CODE; | 758 | dma_addr_t dma_handle = DMA_ERROR_CODE; |
759 | void *vaddr; | 759 | void *vaddr; |
@@ -790,7 +790,7 @@ dma_addr_t iommu_map_page(struct device *dev, struct iommu_table *tbl, | |||
790 | 790 | ||
791 | void iommu_unmap_page(struct iommu_table *tbl, dma_addr_t dma_handle, | 791 | void iommu_unmap_page(struct iommu_table *tbl, dma_addr_t dma_handle, |
792 | size_t size, enum dma_data_direction direction, | 792 | size_t size, enum dma_data_direction direction, |
793 | struct dma_attrs *attrs) | 793 | unsigned long attrs) |
794 | { | 794 | { |
795 | unsigned int npages; | 795 | unsigned int npages; |
796 | 796 | ||
@@ -845,7 +845,7 @@ void *iommu_alloc_coherent(struct device *dev, struct iommu_table *tbl, | |||
845 | nio_pages = size >> tbl->it_page_shift; | 845 | nio_pages = size >> tbl->it_page_shift; |
846 | io_order = get_iommu_order(size, tbl); | 846 | io_order = get_iommu_order(size, tbl); |
847 | mapping = iommu_alloc(dev, tbl, ret, nio_pages, DMA_BIDIRECTIONAL, | 847 | mapping = iommu_alloc(dev, tbl, ret, nio_pages, DMA_BIDIRECTIONAL, |
848 | mask >> tbl->it_page_shift, io_order, NULL); | 848 | mask >> tbl->it_page_shift, io_order, 0); |
849 | if (mapping == DMA_ERROR_CODE) { | 849 | if (mapping == DMA_ERROR_CODE) { |
850 | free_pages((unsigned long)ret, order); | 850 | free_pages((unsigned long)ret, order); |
851 | return NULL; | 851 | return NULL; |
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c index 8d7358f3a273..b3813ddb2fb4 100644 --- a/arch/powerpc/kernel/vio.c +++ b/arch/powerpc/kernel/vio.c | |||
@@ -482,7 +482,7 @@ static void vio_cmo_balance(struct work_struct *work) | |||
482 | 482 | ||
483 | static void *vio_dma_iommu_alloc_coherent(struct device *dev, size_t size, | 483 | static void *vio_dma_iommu_alloc_coherent(struct device *dev, size_t size, |
484 | dma_addr_t *dma_handle, gfp_t flag, | 484 | dma_addr_t *dma_handle, gfp_t flag, |
485 | struct dma_attrs *attrs) | 485 | unsigned long attrs) |
486 | { | 486 | { |
487 | struct vio_dev *viodev = to_vio_dev(dev); | 487 | struct vio_dev *viodev = to_vio_dev(dev); |
488 | void *ret; | 488 | void *ret; |
@@ -503,7 +503,7 @@ static void *vio_dma_iommu_alloc_coherent(struct device *dev, size_t size, | |||
503 | 503 | ||
504 | static void vio_dma_iommu_free_coherent(struct device *dev, size_t size, | 504 | static void vio_dma_iommu_free_coherent(struct device *dev, size_t size, |
505 | void *vaddr, dma_addr_t dma_handle, | 505 | void *vaddr, dma_addr_t dma_handle, |
506 | struct dma_attrs *attrs) | 506 | unsigned long attrs) |
507 | { | 507 | { |
508 | struct vio_dev *viodev = to_vio_dev(dev); | 508 | struct vio_dev *viodev = to_vio_dev(dev); |
509 | 509 | ||
@@ -515,7 +515,7 @@ static void vio_dma_iommu_free_coherent(struct device *dev, size_t size, | |||
515 | static dma_addr_t vio_dma_iommu_map_page(struct device *dev, struct page *page, | 515 | static dma_addr_t vio_dma_iommu_map_page(struct device *dev, struct page *page, |
516 | unsigned long offset, size_t size, | 516 | unsigned long offset, size_t size, |
517 | enum dma_data_direction direction, | 517 | enum dma_data_direction direction, |
518 | struct dma_attrs *attrs) | 518 | unsigned long attrs) |
519 | { | 519 | { |
520 | struct vio_dev *viodev = to_vio_dev(dev); | 520 | struct vio_dev *viodev = to_vio_dev(dev); |
521 | struct iommu_table *tbl; | 521 | struct iommu_table *tbl; |
@@ -539,7 +539,7 @@ static dma_addr_t vio_dma_iommu_map_page(struct device *dev, struct page *page, | |||
539 | static void vio_dma_iommu_unmap_page(struct device *dev, dma_addr_t dma_handle, | 539 | static void vio_dma_iommu_unmap_page(struct device *dev, dma_addr_t dma_handle, |
540 | size_t size, | 540 | size_t size, |
541 | enum dma_data_direction direction, | 541 | enum dma_data_direction direction, |
542 | struct dma_attrs *attrs) | 542 | unsigned long attrs) |
543 | { | 543 | { |
544 | struct vio_dev *viodev = to_vio_dev(dev); | 544 | struct vio_dev *viodev = to_vio_dev(dev); |
545 | struct iommu_table *tbl; | 545 | struct iommu_table *tbl; |
@@ -552,7 +552,7 @@ static void vio_dma_iommu_unmap_page(struct device *dev, dma_addr_t dma_handle, | |||
552 | 552 | ||
553 | static int vio_dma_iommu_map_sg(struct device *dev, struct scatterlist *sglist, | 553 | static int vio_dma_iommu_map_sg(struct device *dev, struct scatterlist *sglist, |
554 | int nelems, enum dma_data_direction direction, | 554 | int nelems, enum dma_data_direction direction, |
555 | struct dma_attrs *attrs) | 555 | unsigned long attrs) |
556 | { | 556 | { |
557 | struct vio_dev *viodev = to_vio_dev(dev); | 557 | struct vio_dev *viodev = to_vio_dev(dev); |
558 | struct iommu_table *tbl; | 558 | struct iommu_table *tbl; |
@@ -588,7 +588,7 @@ static int vio_dma_iommu_map_sg(struct device *dev, struct scatterlist *sglist, | |||
588 | static void vio_dma_iommu_unmap_sg(struct device *dev, | 588 | static void vio_dma_iommu_unmap_sg(struct device *dev, |
589 | struct scatterlist *sglist, int nelems, | 589 | struct scatterlist *sglist, int nelems, |
590 | enum dma_data_direction direction, | 590 | enum dma_data_direction direction, |
591 | struct dma_attrs *attrs) | 591 | unsigned long attrs) |
592 | { | 592 | { |
593 | struct vio_dev *viodev = to_vio_dev(dev); | 593 | struct vio_dev *viodev = to_vio_dev(dev); |
594 | struct iommu_table *tbl; | 594 | struct iommu_table *tbl; |
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c index 9027d7c48507..f7d1a4953ea0 100644 --- a/arch/powerpc/platforms/cell/iommu.c +++ b/arch/powerpc/platforms/cell/iommu.c | |||
@@ -166,7 +166,7 @@ static void invalidate_tce_cache(struct cbe_iommu *iommu, unsigned long *pte, | |||
166 | 166 | ||
167 | static int tce_build_cell(struct iommu_table *tbl, long index, long npages, | 167 | static int tce_build_cell(struct iommu_table *tbl, long index, long npages, |
168 | unsigned long uaddr, enum dma_data_direction direction, | 168 | unsigned long uaddr, enum dma_data_direction direction, |
169 | struct dma_attrs *attrs) | 169 | unsigned long attrs) |
170 | { | 170 | { |
171 | int i; | 171 | int i; |
172 | unsigned long *io_pte, base_pte; | 172 | unsigned long *io_pte, base_pte; |
@@ -193,7 +193,7 @@ static int tce_build_cell(struct iommu_table *tbl, long index, long npages, | |||
193 | base_pte = CBE_IOPTE_PP_W | CBE_IOPTE_PP_R | CBE_IOPTE_M | | 193 | base_pte = CBE_IOPTE_PP_W | CBE_IOPTE_PP_R | CBE_IOPTE_M | |
194 | CBE_IOPTE_SO_RW | (window->ioid & CBE_IOPTE_IOID_Mask); | 194 | CBE_IOPTE_SO_RW | (window->ioid & CBE_IOPTE_IOID_Mask); |
195 | #endif | 195 | #endif |
196 | if (unlikely(dma_get_attr(DMA_ATTR_WEAK_ORDERING, attrs))) | 196 | if (unlikely(attrs & DMA_ATTR_WEAK_ORDERING)) |
197 | base_pte &= ~CBE_IOPTE_SO_RW; | 197 | base_pte &= ~CBE_IOPTE_SO_RW; |
198 | 198 | ||
199 | io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset); | 199 | io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset); |
@@ -526,7 +526,7 @@ cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np, | |||
526 | 526 | ||
527 | __set_bit(0, window->table.it_map); | 527 | __set_bit(0, window->table.it_map); |
528 | tce_build_cell(&window->table, window->table.it_offset, 1, | 528 | tce_build_cell(&window->table, window->table.it_offset, 1, |
529 | (unsigned long)iommu->pad_page, DMA_TO_DEVICE, NULL); | 529 | (unsigned long)iommu->pad_page, DMA_TO_DEVICE, 0); |
530 | 530 | ||
531 | return window; | 531 | return window; |
532 | } | 532 | } |
@@ -572,7 +572,7 @@ static struct iommu_table *cell_get_iommu_table(struct device *dev) | |||
572 | 572 | ||
573 | static void *dma_fixed_alloc_coherent(struct device *dev, size_t size, | 573 | static void *dma_fixed_alloc_coherent(struct device *dev, size_t size, |
574 | dma_addr_t *dma_handle, gfp_t flag, | 574 | dma_addr_t *dma_handle, gfp_t flag, |
575 | struct dma_attrs *attrs) | 575 | unsigned long attrs) |
576 | { | 576 | { |
577 | if (iommu_fixed_is_weak) | 577 | if (iommu_fixed_is_weak) |
578 | return iommu_alloc_coherent(dev, cell_get_iommu_table(dev), | 578 | return iommu_alloc_coherent(dev, cell_get_iommu_table(dev), |
@@ -586,7 +586,7 @@ static void *dma_fixed_alloc_coherent(struct device *dev, size_t size, | |||
586 | 586 | ||
587 | static void dma_fixed_free_coherent(struct device *dev, size_t size, | 587 | static void dma_fixed_free_coherent(struct device *dev, size_t size, |
588 | void *vaddr, dma_addr_t dma_handle, | 588 | void *vaddr, dma_addr_t dma_handle, |
589 | struct dma_attrs *attrs) | 589 | unsigned long attrs) |
590 | { | 590 | { |
591 | if (iommu_fixed_is_weak) | 591 | if (iommu_fixed_is_weak) |
592 | iommu_free_coherent(cell_get_iommu_table(dev), size, vaddr, | 592 | iommu_free_coherent(cell_get_iommu_table(dev), size, vaddr, |
@@ -598,9 +598,9 @@ static void dma_fixed_free_coherent(struct device *dev, size_t size, | |||
598 | static dma_addr_t dma_fixed_map_page(struct device *dev, struct page *page, | 598 | static dma_addr_t dma_fixed_map_page(struct device *dev, struct page *page, |
599 | unsigned long offset, size_t size, | 599 | unsigned long offset, size_t size, |
600 | enum dma_data_direction direction, | 600 | enum dma_data_direction direction, |
601 | struct dma_attrs *attrs) | 601 | unsigned long attrs) |
602 | { | 602 | { |
603 | if (iommu_fixed_is_weak == dma_get_attr(DMA_ATTR_WEAK_ORDERING, attrs)) | 603 | if (iommu_fixed_is_weak == (attrs & DMA_ATTR_WEAK_ORDERING)) |
604 | return dma_direct_ops.map_page(dev, page, offset, size, | 604 | return dma_direct_ops.map_page(dev, page, offset, size, |
605 | direction, attrs); | 605 | direction, attrs); |
606 | else | 606 | else |
@@ -611,9 +611,9 @@ static dma_addr_t dma_fixed_map_page(struct device *dev, struct page *page, | |||
611 | 611 | ||
612 | static void dma_fixed_unmap_page(struct device *dev, dma_addr_t dma_addr, | 612 | static void dma_fixed_unmap_page(struct device *dev, dma_addr_t dma_addr, |
613 | size_t size, enum dma_data_direction direction, | 613 | size_t size, enum dma_data_direction direction, |
614 | struct dma_attrs *attrs) | 614 | unsigned long attrs) |
615 | { | 615 | { |
616 | if (iommu_fixed_is_weak == dma_get_attr(DMA_ATTR_WEAK_ORDERING, attrs)) | 616 | if (iommu_fixed_is_weak == (attrs & DMA_ATTR_WEAK_ORDERING)) |
617 | dma_direct_ops.unmap_page(dev, dma_addr, size, direction, | 617 | dma_direct_ops.unmap_page(dev, dma_addr, size, direction, |
618 | attrs); | 618 | attrs); |
619 | else | 619 | else |
@@ -623,9 +623,9 @@ static void dma_fixed_unmap_page(struct device *dev, dma_addr_t dma_addr, | |||
623 | 623 | ||
624 | static int dma_fixed_map_sg(struct device *dev, struct scatterlist *sg, | 624 | static int dma_fixed_map_sg(struct device *dev, struct scatterlist *sg, |
625 | int nents, enum dma_data_direction direction, | 625 | int nents, enum dma_data_direction direction, |
626 | struct dma_attrs *attrs) | 626 | unsigned long attrs) |
627 | { | 627 | { |
628 | if (iommu_fixed_is_weak == dma_get_attr(DMA_ATTR_WEAK_ORDERING, attrs)) | 628 | if (iommu_fixed_is_weak == (attrs & DMA_ATTR_WEAK_ORDERING)) |
629 | return dma_direct_ops.map_sg(dev, sg, nents, direction, attrs); | 629 | return dma_direct_ops.map_sg(dev, sg, nents, direction, attrs); |
630 | else | 630 | else |
631 | return ppc_iommu_map_sg(dev, cell_get_iommu_table(dev), sg, | 631 | return ppc_iommu_map_sg(dev, cell_get_iommu_table(dev), sg, |
@@ -635,9 +635,9 @@ static int dma_fixed_map_sg(struct device *dev, struct scatterlist *sg, | |||
635 | 635 | ||
636 | static void dma_fixed_unmap_sg(struct device *dev, struct scatterlist *sg, | 636 | static void dma_fixed_unmap_sg(struct device *dev, struct scatterlist *sg, |
637 | int nents, enum dma_data_direction direction, | 637 | int nents, enum dma_data_direction direction, |
638 | struct dma_attrs *attrs) | 638 | unsigned long attrs) |
639 | { | 639 | { |
640 | if (iommu_fixed_is_weak == dma_get_attr(DMA_ATTR_WEAK_ORDERING, attrs)) | 640 | if (iommu_fixed_is_weak == (attrs & DMA_ATTR_WEAK_ORDERING)) |
641 | dma_direct_ops.unmap_sg(dev, sg, nents, direction, attrs); | 641 | dma_direct_ops.unmap_sg(dev, sg, nents, direction, attrs); |
642 | else | 642 | else |
643 | ppc_iommu_unmap_sg(cell_get_iommu_table(dev), sg, nents, | 643 | ppc_iommu_unmap_sg(cell_get_iommu_table(dev), sg, nents, |
@@ -1162,7 +1162,7 @@ static int __init setup_iommu_fixed(char *str) | |||
1162 | pciep = of_find_node_by_type(NULL, "pcie-endpoint"); | 1162 | pciep = of_find_node_by_type(NULL, "pcie-endpoint"); |
1163 | 1163 | ||
1164 | if (strcmp(str, "weak") == 0 || (pciep && strcmp(str, "strong") != 0)) | 1164 | if (strcmp(str, "weak") == 0 || (pciep && strcmp(str, "strong") != 0)) |
1165 | iommu_fixed_is_weak = 1; | 1165 | iommu_fixed_is_weak = DMA_ATTR_WEAK_ORDERING; |
1166 | 1166 | ||
1167 | of_node_put(pciep); | 1167 | of_node_put(pciep); |
1168 | 1168 | ||
diff --git a/arch/powerpc/platforms/pasemi/iommu.c b/arch/powerpc/platforms/pasemi/iommu.c index 43dd3fb514e0..309d9ccccd50 100644 --- a/arch/powerpc/platforms/pasemi/iommu.c +++ b/arch/powerpc/platforms/pasemi/iommu.c | |||
@@ -88,7 +88,7 @@ static int iommu_table_iobmap_inited; | |||
88 | static int iobmap_build(struct iommu_table *tbl, long index, | 88 | static int iobmap_build(struct iommu_table *tbl, long index, |
89 | long npages, unsigned long uaddr, | 89 | long npages, unsigned long uaddr, |
90 | enum dma_data_direction direction, | 90 | enum dma_data_direction direction, |
91 | struct dma_attrs *attrs) | 91 | unsigned long attrs) |
92 | { | 92 | { |
93 | u32 *ip; | 93 | u32 *ip; |
94 | u32 rpn; | 94 | u32 rpn; |
diff --git a/arch/powerpc/platforms/powernv/npu-dma.c b/arch/powerpc/platforms/powernv/npu-dma.c index 4383a5ff82ba..00e1a0195c78 100644 --- a/arch/powerpc/platforms/powernv/npu-dma.c +++ b/arch/powerpc/platforms/powernv/npu-dma.c | |||
@@ -73,7 +73,7 @@ EXPORT_SYMBOL(pnv_pci_get_npu_dev); | |||
73 | 73 | ||
74 | static void *dma_npu_alloc(struct device *dev, size_t size, | 74 | static void *dma_npu_alloc(struct device *dev, size_t size, |
75 | dma_addr_t *dma_handle, gfp_t flag, | 75 | dma_addr_t *dma_handle, gfp_t flag, |
76 | struct dma_attrs *attrs) | 76 | unsigned long attrs) |
77 | { | 77 | { |
78 | NPU_DMA_OP_UNSUPPORTED(); | 78 | NPU_DMA_OP_UNSUPPORTED(); |
79 | return NULL; | 79 | return NULL; |
@@ -81,7 +81,7 @@ static void *dma_npu_alloc(struct device *dev, size_t size, | |||
81 | 81 | ||
82 | static void dma_npu_free(struct device *dev, size_t size, | 82 | static void dma_npu_free(struct device *dev, size_t size, |
83 | void *vaddr, dma_addr_t dma_handle, | 83 | void *vaddr, dma_addr_t dma_handle, |
84 | struct dma_attrs *attrs) | 84 | unsigned long attrs) |
85 | { | 85 | { |
86 | NPU_DMA_OP_UNSUPPORTED(); | 86 | NPU_DMA_OP_UNSUPPORTED(); |
87 | } | 87 | } |
@@ -89,7 +89,7 @@ static void dma_npu_free(struct device *dev, size_t size, | |||
89 | static dma_addr_t dma_npu_map_page(struct device *dev, struct page *page, | 89 | static dma_addr_t dma_npu_map_page(struct device *dev, struct page *page, |
90 | unsigned long offset, size_t size, | 90 | unsigned long offset, size_t size, |
91 | enum dma_data_direction direction, | 91 | enum dma_data_direction direction, |
92 | struct dma_attrs *attrs) | 92 | unsigned long attrs) |
93 | { | 93 | { |
94 | NPU_DMA_OP_UNSUPPORTED(); | 94 | NPU_DMA_OP_UNSUPPORTED(); |
95 | return 0; | 95 | return 0; |
@@ -97,7 +97,7 @@ static dma_addr_t dma_npu_map_page(struct device *dev, struct page *page, | |||
97 | 97 | ||
98 | static int dma_npu_map_sg(struct device *dev, struct scatterlist *sglist, | 98 | static int dma_npu_map_sg(struct device *dev, struct scatterlist *sglist, |
99 | int nelems, enum dma_data_direction direction, | 99 | int nelems, enum dma_data_direction direction, |
100 | struct dma_attrs *attrs) | 100 | unsigned long attrs) |
101 | { | 101 | { |
102 | NPU_DMA_OP_UNSUPPORTED(); | 102 | NPU_DMA_OP_UNSUPPORTED(); |
103 | return 0; | 103 | return 0; |
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c index 891fc4a453df..6b9528307f62 100644 --- a/arch/powerpc/platforms/powernv/pci-ioda.c +++ b/arch/powerpc/platforms/powernv/pci-ioda.c | |||
@@ -1806,7 +1806,7 @@ static void pnv_pci_p7ioc_tce_invalidate(struct iommu_table *tbl, | |||
1806 | static int pnv_ioda1_tce_build(struct iommu_table *tbl, long index, | 1806 | static int pnv_ioda1_tce_build(struct iommu_table *tbl, long index, |
1807 | long npages, unsigned long uaddr, | 1807 | long npages, unsigned long uaddr, |
1808 | enum dma_data_direction direction, | 1808 | enum dma_data_direction direction, |
1809 | struct dma_attrs *attrs) | 1809 | unsigned long attrs) |
1810 | { | 1810 | { |
1811 | int ret = pnv_tce_build(tbl, index, npages, uaddr, direction, | 1811 | int ret = pnv_tce_build(tbl, index, npages, uaddr, direction, |
1812 | attrs); | 1812 | attrs); |
@@ -1950,7 +1950,7 @@ static void pnv_pci_ioda2_tce_invalidate(struct iommu_table *tbl, | |||
1950 | static int pnv_ioda2_tce_build(struct iommu_table *tbl, long index, | 1950 | static int pnv_ioda2_tce_build(struct iommu_table *tbl, long index, |
1951 | long npages, unsigned long uaddr, | 1951 | long npages, unsigned long uaddr, |
1952 | enum dma_data_direction direction, | 1952 | enum dma_data_direction direction, |
1953 | struct dma_attrs *attrs) | 1953 | unsigned long attrs) |
1954 | { | 1954 | { |
1955 | int ret = pnv_tce_build(tbl, index, npages, uaddr, direction, | 1955 | int ret = pnv_tce_build(tbl, index, npages, uaddr, direction, |
1956 | attrs); | 1956 | attrs); |
diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c index 6701dd5ded20..a21d831c1114 100644 --- a/arch/powerpc/platforms/powernv/pci.c +++ b/arch/powerpc/platforms/powernv/pci.c | |||
@@ -704,7 +704,7 @@ static __be64 *pnv_tce(struct iommu_table *tbl, long idx) | |||
704 | 704 | ||
705 | int pnv_tce_build(struct iommu_table *tbl, long index, long npages, | 705 | int pnv_tce_build(struct iommu_table *tbl, long index, long npages, |
706 | unsigned long uaddr, enum dma_data_direction direction, | 706 | unsigned long uaddr, enum dma_data_direction direction, |
707 | struct dma_attrs *attrs) | 707 | unsigned long attrs) |
708 | { | 708 | { |
709 | u64 proto_tce = iommu_direction_to_tce_perm(direction); | 709 | u64 proto_tce = iommu_direction_to_tce_perm(direction); |
710 | u64 rpn = __pa(uaddr) >> tbl->it_page_shift; | 710 | u64 rpn = __pa(uaddr) >> tbl->it_page_shift; |
diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h index d088d4f06116..e64df7894d6e 100644 --- a/arch/powerpc/platforms/powernv/pci.h +++ b/arch/powerpc/platforms/powernv/pci.h | |||
@@ -181,7 +181,7 @@ struct pnv_phb { | |||
181 | extern struct pci_ops pnv_pci_ops; | 181 | extern struct pci_ops pnv_pci_ops; |
182 | extern int pnv_tce_build(struct iommu_table *tbl, long index, long npages, | 182 | extern int pnv_tce_build(struct iommu_table *tbl, long index, long npages, |
183 | unsigned long uaddr, enum dma_data_direction direction, | 183 | unsigned long uaddr, enum dma_data_direction direction, |
184 | struct dma_attrs *attrs); | 184 | unsigned long attrs); |
185 | extern void pnv_tce_free(struct iommu_table *tbl, long index, long npages); | 185 | extern void pnv_tce_free(struct iommu_table *tbl, long index, long npages); |
186 | extern int pnv_tce_xchg(struct iommu_table *tbl, long index, | 186 | extern int pnv_tce_xchg(struct iommu_table *tbl, long index, |
187 | unsigned long *hpa, enum dma_data_direction *direction); | 187 | unsigned long *hpa, enum dma_data_direction *direction); |
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c index 5606fe36faf2..8af1c15aef85 100644 --- a/arch/powerpc/platforms/ps3/system-bus.c +++ b/arch/powerpc/platforms/ps3/system-bus.c | |||
@@ -516,7 +516,7 @@ core_initcall(ps3_system_bus_init); | |||
516 | */ | 516 | */ |
517 | static void * ps3_alloc_coherent(struct device *_dev, size_t size, | 517 | static void * ps3_alloc_coherent(struct device *_dev, size_t size, |
518 | dma_addr_t *dma_handle, gfp_t flag, | 518 | dma_addr_t *dma_handle, gfp_t flag, |
519 | struct dma_attrs *attrs) | 519 | unsigned long attrs) |
520 | { | 520 | { |
521 | int result; | 521 | int result; |
522 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 522 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
@@ -553,7 +553,7 @@ clean_none: | |||
553 | } | 553 | } |
554 | 554 | ||
555 | static void ps3_free_coherent(struct device *_dev, size_t size, void *vaddr, | 555 | static void ps3_free_coherent(struct device *_dev, size_t size, void *vaddr, |
556 | dma_addr_t dma_handle, struct dma_attrs *attrs) | 556 | dma_addr_t dma_handle, unsigned long attrs) |
557 | { | 557 | { |
558 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 558 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
559 | 559 | ||
@@ -569,7 +569,7 @@ static void ps3_free_coherent(struct device *_dev, size_t size, void *vaddr, | |||
569 | 569 | ||
570 | static dma_addr_t ps3_sb_map_page(struct device *_dev, struct page *page, | 570 | static dma_addr_t ps3_sb_map_page(struct device *_dev, struct page *page, |
571 | unsigned long offset, size_t size, enum dma_data_direction direction, | 571 | unsigned long offset, size_t size, enum dma_data_direction direction, |
572 | struct dma_attrs *attrs) | 572 | unsigned long attrs) |
573 | { | 573 | { |
574 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 574 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
575 | int result; | 575 | int result; |
@@ -592,7 +592,7 @@ static dma_addr_t ps3_sb_map_page(struct device *_dev, struct page *page, | |||
592 | static dma_addr_t ps3_ioc0_map_page(struct device *_dev, struct page *page, | 592 | static dma_addr_t ps3_ioc0_map_page(struct device *_dev, struct page *page, |
593 | unsigned long offset, size_t size, | 593 | unsigned long offset, size_t size, |
594 | enum dma_data_direction direction, | 594 | enum dma_data_direction direction, |
595 | struct dma_attrs *attrs) | 595 | unsigned long attrs) |
596 | { | 596 | { |
597 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 597 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
598 | int result; | 598 | int result; |
@@ -626,7 +626,7 @@ static dma_addr_t ps3_ioc0_map_page(struct device *_dev, struct page *page, | |||
626 | } | 626 | } |
627 | 627 | ||
628 | static void ps3_unmap_page(struct device *_dev, dma_addr_t dma_addr, | 628 | static void ps3_unmap_page(struct device *_dev, dma_addr_t dma_addr, |
629 | size_t size, enum dma_data_direction direction, struct dma_attrs *attrs) | 629 | size_t size, enum dma_data_direction direction, unsigned long attrs) |
630 | { | 630 | { |
631 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 631 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
632 | int result; | 632 | int result; |
@@ -640,7 +640,7 @@ static void ps3_unmap_page(struct device *_dev, dma_addr_t dma_addr, | |||
640 | } | 640 | } |
641 | 641 | ||
642 | static int ps3_sb_map_sg(struct device *_dev, struct scatterlist *sgl, | 642 | static int ps3_sb_map_sg(struct device *_dev, struct scatterlist *sgl, |
643 | int nents, enum dma_data_direction direction, struct dma_attrs *attrs) | 643 | int nents, enum dma_data_direction direction, unsigned long attrs) |
644 | { | 644 | { |
645 | #if defined(CONFIG_PS3_DYNAMIC_DMA) | 645 | #if defined(CONFIG_PS3_DYNAMIC_DMA) |
646 | BUG_ON("do"); | 646 | BUG_ON("do"); |
@@ -670,14 +670,14 @@ static int ps3_sb_map_sg(struct device *_dev, struct scatterlist *sgl, | |||
670 | static int ps3_ioc0_map_sg(struct device *_dev, struct scatterlist *sg, | 670 | static int ps3_ioc0_map_sg(struct device *_dev, struct scatterlist *sg, |
671 | int nents, | 671 | int nents, |
672 | enum dma_data_direction direction, | 672 | enum dma_data_direction direction, |
673 | struct dma_attrs *attrs) | 673 | unsigned long attrs) |
674 | { | 674 | { |
675 | BUG(); | 675 | BUG(); |
676 | return 0; | 676 | return 0; |
677 | } | 677 | } |
678 | 678 | ||
679 | static void ps3_sb_unmap_sg(struct device *_dev, struct scatterlist *sg, | 679 | static void ps3_sb_unmap_sg(struct device *_dev, struct scatterlist *sg, |
680 | int nents, enum dma_data_direction direction, struct dma_attrs *attrs) | 680 | int nents, enum dma_data_direction direction, unsigned long attrs) |
681 | { | 681 | { |
682 | #if defined(CONFIG_PS3_DYNAMIC_DMA) | 682 | #if defined(CONFIG_PS3_DYNAMIC_DMA) |
683 | BUG_ON("do"); | 683 | BUG_ON("do"); |
@@ -686,7 +686,7 @@ static void ps3_sb_unmap_sg(struct device *_dev, struct scatterlist *sg, | |||
686 | 686 | ||
687 | static void ps3_ioc0_unmap_sg(struct device *_dev, struct scatterlist *sg, | 687 | static void ps3_ioc0_unmap_sg(struct device *_dev, struct scatterlist *sg, |
688 | int nents, enum dma_data_direction direction, | 688 | int nents, enum dma_data_direction direction, |
689 | struct dma_attrs *attrs) | 689 | unsigned long attrs) |
690 | { | 690 | { |
691 | BUG(); | 691 | BUG(); |
692 | } | 692 | } |
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index 770a753b52c9..0024e451bb36 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c | |||
@@ -123,7 +123,7 @@ static void iommu_pseries_free_group(struct iommu_table_group *table_group, | |||
123 | static int tce_build_pSeries(struct iommu_table *tbl, long index, | 123 | static int tce_build_pSeries(struct iommu_table *tbl, long index, |
124 | long npages, unsigned long uaddr, | 124 | long npages, unsigned long uaddr, |
125 | enum dma_data_direction direction, | 125 | enum dma_data_direction direction, |
126 | struct dma_attrs *attrs) | 126 | unsigned long attrs) |
127 | { | 127 | { |
128 | u64 proto_tce; | 128 | u64 proto_tce; |
129 | __be64 *tcep, *tces; | 129 | __be64 *tcep, *tces; |
@@ -173,7 +173,7 @@ static void tce_freemulti_pSeriesLP(struct iommu_table*, long, long); | |||
173 | static int tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum, | 173 | static int tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum, |
174 | long npages, unsigned long uaddr, | 174 | long npages, unsigned long uaddr, |
175 | enum dma_data_direction direction, | 175 | enum dma_data_direction direction, |
176 | struct dma_attrs *attrs) | 176 | unsigned long attrs) |
177 | { | 177 | { |
178 | u64 rc = 0; | 178 | u64 rc = 0; |
179 | u64 proto_tce, tce; | 179 | u64 proto_tce, tce; |
@@ -216,7 +216,7 @@ static DEFINE_PER_CPU(__be64 *, tce_page); | |||
216 | static int tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum, | 216 | static int tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum, |
217 | long npages, unsigned long uaddr, | 217 | long npages, unsigned long uaddr, |
218 | enum dma_data_direction direction, | 218 | enum dma_data_direction direction, |
219 | struct dma_attrs *attrs) | 219 | unsigned long attrs) |
220 | { | 220 | { |
221 | u64 rc = 0; | 221 | u64 rc = 0; |
222 | u64 proto_tce; | 222 | u64 proto_tce; |
diff --git a/arch/powerpc/sysdev/dart_iommu.c b/arch/powerpc/sysdev/dart_iommu.c index 26904f4879ec..3573d54b2770 100644 --- a/arch/powerpc/sysdev/dart_iommu.c +++ b/arch/powerpc/sysdev/dart_iommu.c | |||
@@ -185,7 +185,7 @@ static void dart_flush(struct iommu_table *tbl) | |||
185 | static int dart_build(struct iommu_table *tbl, long index, | 185 | static int dart_build(struct iommu_table *tbl, long index, |
186 | long npages, unsigned long uaddr, | 186 | long npages, unsigned long uaddr, |
187 | enum dma_data_direction direction, | 187 | enum dma_data_direction direction, |
188 | struct dma_attrs *attrs) | 188 | unsigned long attrs) |
189 | { | 189 | { |
190 | unsigned int *dp, *orig_dp; | 190 | unsigned int *dp, *orig_dp; |
191 | unsigned int rpn; | 191 | unsigned int rpn; |