lkml.org 
[lkml]   [2011]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [RFC PATCH 2/2 -mm] RapidIO: TSI721 Add DMA Engine support
    On Tue, 4 Oct 2011 18:38:09 -0700 "Bounine, Alexandre" <Alexandre.Bounine@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 <akpm@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.bounine@idt.com>
    From: Andrew Morton <akpm@linux-foundation.org>
    Subject: include-linux-dma-mappingh-add-dma_zalloc_coherent
    Signed-off-by: Andrew Morton <akpm@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)
    _


    \
     
     \ /
      Last update: 2011-10-05 03:57    [W:0.022 / U:59.852 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site