[PATCH 7/8] common: dma-mapping: change alloc/free_coherent method to more generic alloc/free_attrs

KyongHo Cho pullip.cho at samsung.com
Mon Jun 20 10:45:41 EDT 2011


Hi.

On Mon, Jun 20, 2011 at 4:50 PM, Marek Szyprowski
<m.szyprowski at samsung.com> wrote:

>  struct dma_map_ops {
> -       void* (*alloc_coherent)(struct device *dev, size_t size,
> -                               dma_addr_t *dma_handle, gfp_t gfp);
> -       void (*free_coherent)(struct device *dev, size_t size,
> -                             void *vaddr, dma_addr_t dma_handle);
> +       void* (*alloc)(struct device *dev, size_t size,
> +                               dma_addr_t *dma_handle, gfp_t gfp,
> +                               struct dma_attrs *attrs);
> +       void (*free)(struct device *dev, size_t size,
> +                             void *vaddr, dma_addr_t dma_handle,
> +                             struct dma_attrs *attrs);
> +       int (*mmap)(struct device *, struct vm_area_struct *,
> +                         void *, dma_addr_t, size_t, struct dma_attrs *attrs);
> +
>        dma_addr_t (*map_page)(struct device *dev, struct page *page,
>                               unsigned long offset, size_t size,
>                               enum dma_data_direction dir,

I still don't agree with your idea that change alloc_coherent() with alloc().
As I said before, we actually do not need dma_alloc_writecombine() anymore
because it is not different from dma_alloc_coherent() in ARM.
Most of other architectures do not have dma_alloc_writecombine().
If you want dma_alloc_coherent() to allocate user virtual address,
I believe that it is also available with mmap() you introduced.

Regards,
Cho KyongHo.



More information about the linux-arm-kernel mailing list