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/ia64/hp | |
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/ia64/hp')
-rw-r--r-- | arch/ia64/hp/common/sba_iommu.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c index a6d6190c9d24..630ee8073899 100644 --- a/arch/ia64/hp/common/sba_iommu.c +++ b/arch/ia64/hp/common/sba_iommu.c | |||
@@ -919,7 +919,7 @@ sba_mark_invalid(struct ioc *ioc, dma_addr_t iova, size_t byte_cnt) | |||
919 | static dma_addr_t sba_map_page(struct device *dev, struct page *page, | 919 | static dma_addr_t sba_map_page(struct device *dev, struct page *page, |
920 | unsigned long poff, size_t size, | 920 | unsigned long poff, size_t size, |
921 | enum dma_data_direction dir, | 921 | enum dma_data_direction dir, |
922 | struct dma_attrs *attrs) | 922 | unsigned long attrs) |
923 | { | 923 | { |
924 | struct ioc *ioc; | 924 | struct ioc *ioc; |
925 | void *addr = page_address(page) + poff; | 925 | void *addr = page_address(page) + poff; |
@@ -1005,7 +1005,7 @@ static dma_addr_t sba_map_page(struct device *dev, struct page *page, | |||
1005 | 1005 | ||
1006 | static dma_addr_t sba_map_single_attrs(struct device *dev, void *addr, | 1006 | static dma_addr_t sba_map_single_attrs(struct device *dev, void *addr, |
1007 | size_t size, enum dma_data_direction dir, | 1007 | size_t size, enum dma_data_direction dir, |
1008 | struct dma_attrs *attrs) | 1008 | unsigned long attrs) |
1009 | { | 1009 | { |
1010 | return sba_map_page(dev, virt_to_page(addr), | 1010 | return sba_map_page(dev, virt_to_page(addr), |
1011 | (unsigned long)addr & ~PAGE_MASK, size, dir, attrs); | 1011 | (unsigned long)addr & ~PAGE_MASK, size, dir, attrs); |
@@ -1046,7 +1046,7 @@ sba_mark_clean(struct ioc *ioc, dma_addr_t iova, size_t size) | |||
1046 | * See Documentation/DMA-API-HOWTO.txt | 1046 | * See Documentation/DMA-API-HOWTO.txt |
1047 | */ | 1047 | */ |
1048 | static void sba_unmap_page(struct device *dev, dma_addr_t iova, size_t size, | 1048 | static void sba_unmap_page(struct device *dev, dma_addr_t iova, size_t size, |
1049 | enum dma_data_direction dir, struct dma_attrs *attrs) | 1049 | enum dma_data_direction dir, unsigned long attrs) |
1050 | { | 1050 | { |
1051 | struct ioc *ioc; | 1051 | struct ioc *ioc; |
1052 | #if DELAYED_RESOURCE_CNT > 0 | 1052 | #if DELAYED_RESOURCE_CNT > 0 |
@@ -1115,7 +1115,7 @@ static void sba_unmap_page(struct device *dev, dma_addr_t iova, size_t size, | |||
1115 | } | 1115 | } |
1116 | 1116 | ||
1117 | void sba_unmap_single_attrs(struct device *dev, dma_addr_t iova, size_t size, | 1117 | void sba_unmap_single_attrs(struct device *dev, dma_addr_t iova, size_t size, |
1118 | enum dma_data_direction dir, struct dma_attrs *attrs) | 1118 | enum dma_data_direction dir, unsigned long attrs) |
1119 | { | 1119 | { |
1120 | sba_unmap_page(dev, iova, size, dir, attrs); | 1120 | sba_unmap_page(dev, iova, size, dir, attrs); |
1121 | } | 1121 | } |
@@ -1130,7 +1130,7 @@ void sba_unmap_single_attrs(struct device *dev, dma_addr_t iova, size_t size, | |||
1130 | */ | 1130 | */ |
1131 | static void * | 1131 | static void * |
1132 | sba_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, | 1132 | sba_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, |
1133 | gfp_t flags, struct dma_attrs *attrs) | 1133 | gfp_t flags, unsigned long attrs) |
1134 | { | 1134 | { |
1135 | struct ioc *ioc; | 1135 | struct ioc *ioc; |
1136 | void *addr; | 1136 | void *addr; |
@@ -1175,7 +1175,7 @@ sba_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, | |||
1175 | * device to map single to get an iova mapping. | 1175 | * device to map single to get an iova mapping. |
1176 | */ | 1176 | */ |
1177 | *dma_handle = sba_map_single_attrs(&ioc->sac_only_dev->dev, addr, | 1177 | *dma_handle = sba_map_single_attrs(&ioc->sac_only_dev->dev, addr, |
1178 | size, 0, NULL); | 1178 | size, 0, 0); |
1179 | 1179 | ||
1180 | return addr; | 1180 | return addr; |
1181 | } | 1181 | } |
@@ -1191,9 +1191,9 @@ sba_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, | |||
1191 | * See Documentation/DMA-API-HOWTO.txt | 1191 | * See Documentation/DMA-API-HOWTO.txt |
1192 | */ | 1192 | */ |
1193 | static void sba_free_coherent(struct device *dev, size_t size, void *vaddr, | 1193 | static void sba_free_coherent(struct device *dev, size_t size, void *vaddr, |
1194 | dma_addr_t dma_handle, struct dma_attrs *attrs) | 1194 | dma_addr_t dma_handle, unsigned long attrs) |
1195 | { | 1195 | { |
1196 | sba_unmap_single_attrs(dev, dma_handle, size, 0, NULL); | 1196 | sba_unmap_single_attrs(dev, dma_handle, size, 0, 0); |
1197 | free_pages((unsigned long) vaddr, get_order(size)); | 1197 | free_pages((unsigned long) vaddr, get_order(size)); |
1198 | } | 1198 | } |
1199 | 1199 | ||
@@ -1442,7 +1442,7 @@ sba_coalesce_chunks(struct ioc *ioc, struct device *dev, | |||
1442 | 1442 | ||
1443 | static void sba_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist, | 1443 | static void sba_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist, |
1444 | int nents, enum dma_data_direction dir, | 1444 | int nents, enum dma_data_direction dir, |
1445 | struct dma_attrs *attrs); | 1445 | unsigned long attrs); |
1446 | /** | 1446 | /** |
1447 | * sba_map_sg - map Scatter/Gather list | 1447 | * sba_map_sg - map Scatter/Gather list |
1448 | * @dev: instance of PCI owned by the driver that's asking. | 1448 | * @dev: instance of PCI owned by the driver that's asking. |
@@ -1455,7 +1455,7 @@ static void sba_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist, | |||
1455 | */ | 1455 | */ |
1456 | static int sba_map_sg_attrs(struct device *dev, struct scatterlist *sglist, | 1456 | static int sba_map_sg_attrs(struct device *dev, struct scatterlist *sglist, |
1457 | int nents, enum dma_data_direction dir, | 1457 | int nents, enum dma_data_direction dir, |
1458 | struct dma_attrs *attrs) | 1458 | unsigned long attrs) |
1459 | { | 1459 | { |
1460 | struct ioc *ioc; | 1460 | struct ioc *ioc; |
1461 | int coalesced, filled = 0; | 1461 | int coalesced, filled = 0; |
@@ -1551,7 +1551,7 @@ static int sba_map_sg_attrs(struct device *dev, struct scatterlist *sglist, | |||
1551 | */ | 1551 | */ |
1552 | static void sba_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist, | 1552 | static void sba_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist, |
1553 | int nents, enum dma_data_direction dir, | 1553 | int nents, enum dma_data_direction dir, |
1554 | struct dma_attrs *attrs) | 1554 | unsigned long attrs) |
1555 | { | 1555 | { |
1556 | #ifdef ASSERT_PDIR_SANITY | 1556 | #ifdef ASSERT_PDIR_SANITY |
1557 | struct ioc *ioc; | 1557 | struct ioc *ioc; |