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/tile/kernel | |
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/tile/kernel')
-rw-r--r-- | arch/tile/kernel/pci-dma.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/arch/tile/kernel/pci-dma.c b/arch/tile/kernel/pci-dma.c index b6bc0547a4f6..09bb774b39cd 100644 --- a/arch/tile/kernel/pci-dma.c +++ b/arch/tile/kernel/pci-dma.c | |||
@@ -34,7 +34,7 @@ | |||
34 | 34 | ||
35 | static void *tile_dma_alloc_coherent(struct device *dev, size_t size, | 35 | static void *tile_dma_alloc_coherent(struct device *dev, size_t size, |
36 | dma_addr_t *dma_handle, gfp_t gfp, | 36 | dma_addr_t *dma_handle, gfp_t gfp, |
37 | struct dma_attrs *attrs) | 37 | unsigned long attrs) |
38 | { | 38 | { |
39 | u64 dma_mask = (dev && dev->coherent_dma_mask) ? | 39 | u64 dma_mask = (dev && dev->coherent_dma_mask) ? |
40 | dev->coherent_dma_mask : DMA_BIT_MASK(32); | 40 | dev->coherent_dma_mask : DMA_BIT_MASK(32); |
@@ -78,7 +78,7 @@ static void *tile_dma_alloc_coherent(struct device *dev, size_t size, | |||
78 | */ | 78 | */ |
79 | static void tile_dma_free_coherent(struct device *dev, size_t size, | 79 | static void tile_dma_free_coherent(struct device *dev, size_t size, |
80 | void *vaddr, dma_addr_t dma_handle, | 80 | void *vaddr, dma_addr_t dma_handle, |
81 | struct dma_attrs *attrs) | 81 | unsigned long attrs) |
82 | { | 82 | { |
83 | homecache_free_pages((unsigned long)vaddr, get_order(size)); | 83 | homecache_free_pages((unsigned long)vaddr, get_order(size)); |
84 | } | 84 | } |
@@ -202,7 +202,7 @@ static void __dma_complete_pa_range(dma_addr_t dma_addr, size_t size, | |||
202 | 202 | ||
203 | static int tile_dma_map_sg(struct device *dev, struct scatterlist *sglist, | 203 | static int tile_dma_map_sg(struct device *dev, struct scatterlist *sglist, |
204 | int nents, enum dma_data_direction direction, | 204 | int nents, enum dma_data_direction direction, |
205 | struct dma_attrs *attrs) | 205 | unsigned long attrs) |
206 | { | 206 | { |
207 | struct scatterlist *sg; | 207 | struct scatterlist *sg; |
208 | int i; | 208 | int i; |
@@ -224,7 +224,7 @@ static int tile_dma_map_sg(struct device *dev, struct scatterlist *sglist, | |||
224 | 224 | ||
225 | static void tile_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, | 225 | static void tile_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, |
226 | int nents, enum dma_data_direction direction, | 226 | int nents, enum dma_data_direction direction, |
227 | struct dma_attrs *attrs) | 227 | unsigned long attrs) |
228 | { | 228 | { |
229 | struct scatterlist *sg; | 229 | struct scatterlist *sg; |
230 | int i; | 230 | int i; |
@@ -240,7 +240,7 @@ static void tile_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, | |||
240 | static dma_addr_t tile_dma_map_page(struct device *dev, struct page *page, | 240 | static dma_addr_t tile_dma_map_page(struct device *dev, struct page *page, |
241 | unsigned long offset, size_t size, | 241 | unsigned long offset, size_t size, |
242 | enum dma_data_direction direction, | 242 | enum dma_data_direction direction, |
243 | struct dma_attrs *attrs) | 243 | unsigned long attrs) |
244 | { | 244 | { |
245 | BUG_ON(!valid_dma_direction(direction)); | 245 | BUG_ON(!valid_dma_direction(direction)); |
246 | 246 | ||
@@ -252,7 +252,7 @@ static dma_addr_t tile_dma_map_page(struct device *dev, struct page *page, | |||
252 | 252 | ||
253 | static void tile_dma_unmap_page(struct device *dev, dma_addr_t dma_address, | 253 | static void tile_dma_unmap_page(struct device *dev, dma_addr_t dma_address, |
254 | size_t size, enum dma_data_direction direction, | 254 | size_t size, enum dma_data_direction direction, |
255 | struct dma_attrs *attrs) | 255 | unsigned long attrs) |
256 | { | 256 | { |
257 | BUG_ON(!valid_dma_direction(direction)); | 257 | BUG_ON(!valid_dma_direction(direction)); |
258 | 258 | ||
@@ -343,7 +343,7 @@ EXPORT_SYMBOL(tile_dma_map_ops); | |||
343 | 343 | ||
344 | static void *tile_pci_dma_alloc_coherent(struct device *dev, size_t size, | 344 | static void *tile_pci_dma_alloc_coherent(struct device *dev, size_t size, |
345 | dma_addr_t *dma_handle, gfp_t gfp, | 345 | dma_addr_t *dma_handle, gfp_t gfp, |
346 | struct dma_attrs *attrs) | 346 | unsigned long attrs) |
347 | { | 347 | { |
348 | int node = dev_to_node(dev); | 348 | int node = dev_to_node(dev); |
349 | int order = get_order(size); | 349 | int order = get_order(size); |
@@ -368,14 +368,14 @@ static void *tile_pci_dma_alloc_coherent(struct device *dev, size_t size, | |||
368 | */ | 368 | */ |
369 | static void tile_pci_dma_free_coherent(struct device *dev, size_t size, | 369 | static void tile_pci_dma_free_coherent(struct device *dev, size_t size, |
370 | void *vaddr, dma_addr_t dma_handle, | 370 | void *vaddr, dma_addr_t dma_handle, |
371 | struct dma_attrs *attrs) | 371 | unsigned long attrs) |
372 | { | 372 | { |
373 | homecache_free_pages((unsigned long)vaddr, get_order(size)); | 373 | homecache_free_pages((unsigned long)vaddr, get_order(size)); |
374 | } | 374 | } |
375 | 375 | ||
376 | static int tile_pci_dma_map_sg(struct device *dev, struct scatterlist *sglist, | 376 | static int tile_pci_dma_map_sg(struct device *dev, struct scatterlist *sglist, |
377 | int nents, enum dma_data_direction direction, | 377 | int nents, enum dma_data_direction direction, |
378 | struct dma_attrs *attrs) | 378 | unsigned long attrs) |
379 | { | 379 | { |
380 | struct scatterlist *sg; | 380 | struct scatterlist *sg; |
381 | int i; | 381 | int i; |
@@ -400,7 +400,7 @@ static int tile_pci_dma_map_sg(struct device *dev, struct scatterlist *sglist, | |||
400 | static void tile_pci_dma_unmap_sg(struct device *dev, | 400 | static void tile_pci_dma_unmap_sg(struct device *dev, |
401 | struct scatterlist *sglist, int nents, | 401 | struct scatterlist *sglist, int nents, |
402 | enum dma_data_direction direction, | 402 | enum dma_data_direction direction, |
403 | struct dma_attrs *attrs) | 403 | unsigned long attrs) |
404 | { | 404 | { |
405 | struct scatterlist *sg; | 405 | struct scatterlist *sg; |
406 | int i; | 406 | int i; |
@@ -416,7 +416,7 @@ static void tile_pci_dma_unmap_sg(struct device *dev, | |||
416 | static dma_addr_t tile_pci_dma_map_page(struct device *dev, struct page *page, | 416 | static dma_addr_t tile_pci_dma_map_page(struct device *dev, struct page *page, |
417 | unsigned long offset, size_t size, | 417 | unsigned long offset, size_t size, |
418 | enum dma_data_direction direction, | 418 | enum dma_data_direction direction, |
419 | struct dma_attrs *attrs) | 419 | unsigned long attrs) |
420 | { | 420 | { |
421 | BUG_ON(!valid_dma_direction(direction)); | 421 | BUG_ON(!valid_dma_direction(direction)); |
422 | 422 | ||
@@ -429,7 +429,7 @@ static dma_addr_t tile_pci_dma_map_page(struct device *dev, struct page *page, | |||
429 | static void tile_pci_dma_unmap_page(struct device *dev, dma_addr_t dma_address, | 429 | static void tile_pci_dma_unmap_page(struct device *dev, dma_addr_t dma_address, |
430 | size_t size, | 430 | size_t size, |
431 | enum dma_data_direction direction, | 431 | enum dma_data_direction direction, |
432 | struct dma_attrs *attrs) | 432 | unsigned long attrs) |
433 | { | 433 | { |
434 | BUG_ON(!valid_dma_direction(direction)); | 434 | BUG_ON(!valid_dma_direction(direction)); |
435 | 435 | ||
@@ -531,7 +531,7 @@ EXPORT_SYMBOL(gx_pci_dma_map_ops); | |||
531 | #ifdef CONFIG_SWIOTLB | 531 | #ifdef CONFIG_SWIOTLB |
532 | static void *tile_swiotlb_alloc_coherent(struct device *dev, size_t size, | 532 | static void *tile_swiotlb_alloc_coherent(struct device *dev, size_t size, |
533 | dma_addr_t *dma_handle, gfp_t gfp, | 533 | dma_addr_t *dma_handle, gfp_t gfp, |
534 | struct dma_attrs *attrs) | 534 | unsigned long attrs) |
535 | { | 535 | { |
536 | gfp |= GFP_DMA; | 536 | gfp |= GFP_DMA; |
537 | return swiotlb_alloc_coherent(dev, size, dma_handle, gfp); | 537 | return swiotlb_alloc_coherent(dev, size, dma_handle, gfp); |
@@ -539,7 +539,7 @@ static void *tile_swiotlb_alloc_coherent(struct device *dev, size_t size, | |||
539 | 539 | ||
540 | static void tile_swiotlb_free_coherent(struct device *dev, size_t size, | 540 | static void tile_swiotlb_free_coherent(struct device *dev, size_t size, |
541 | void *vaddr, dma_addr_t dma_addr, | 541 | void *vaddr, dma_addr_t dma_addr, |
542 | struct dma_attrs *attrs) | 542 | unsigned long attrs) |
543 | { | 543 | { |
544 | swiotlb_free_coherent(dev, size, vaddr, dma_addr); | 544 | swiotlb_free_coherent(dev, size, vaddr, dma_addr); |
545 | } | 545 | } |