On Tue, 4 Oct 2011 18:38:09 -0700 "Bounine, Alexandre" <alexandre.boun...@idt.com> wrote:
> > No, it can be used all over the place: drivers/net/irda/w83977af_ir.c, > > drivers/scsi/bnx2fc/bnx2fc_tgt.c, > > drivers/net/wireless/rt2x00/rt2x00pci.c, > > drivers/crypto/amcc/crypto4xx_core.c and many nmore. > > In this case I will happily use dma_zalloc_coherent() as soon as > it is available geeze, which of us is more lazy? Here we go... From: Andrew Morton <a...@linux-foundation.org> Subject: include/linux/dma-mapping.h: add dma_zalloc_coherent() Lots of driver code does a dma_alloc_coherent() and then zeroes out the memory with a memset. Make it easy for them. Cc: Alexandre Bounine <alexandre.boun...@idt.com> From: Andrew Morton <a...@linux-foundation.org> Subject: include-linux-dma-mappingh-add-dma_zalloc_coherent Signed-off-by: Andrew Morton <a...@linux-foundation.org> --- Documentation/DMA-API.txt | 7 +++++++ include/linux/dma-mapping.h | 10 ++++++++++ 2 files changed, 17 insertions(+) diff -puN include/linux/dma-mapping.h~include-linux-dma-mappingh-add-dma_zalloc_coherent include/linux/dma-mapping.h --- a/include/linux/dma-mapping.h~include-linux-dma-mappingh-add-dma_zalloc_coherent +++ a/include/linux/dma-mapping.h @@ -1,6 +1,7 @@ #ifndef _LINUX_DMA_MAPPING_H #define _LINUX_DMA_MAPPING_H +#include <linux/string.h> #include <linux/device.h> #include <linux/err.h> #include <linux/dma-attrs.h> @@ -117,6 +118,15 @@ static inline int dma_set_seg_boundary(s return -EIO; } +static inline void *dma_zalloc_coherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t flag) +{ + void *ret = dma_alloc_coherent(dev, size, dma_handle, flag); + if (ret) + memset(ret, 0, size); + return ret; +} + #ifdef CONFIG_HAS_DMA static inline int dma_get_cache_alignment(void) { diff -puN Documentation/DMA-API.txt~include-linux-dma-mappingh-add-dma_zalloc_coherent Documentation/DMA-API.txt --- a/Documentation/DMA-API.txt~include-linux-dma-mappingh-add-dma_zalloc_coherent +++ a/Documentation/DMA-API.txt @@ -50,6 +50,13 @@ specify the GFP_ flags (see kmalloc) for implementation may choose to ignore flags that affect the location of the returned memory, like GFP_DMA). +void * +dma_zalloc_coherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t flag) + +Wraps dma_alloc_coherent() and also zeroes the returned memory if the +allocation attempt succeeded. + void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr_t dma_handle) _ _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev