Re: [RFC 0/4] ARM: dma-mapping: IOMMU atomic allocation

From: Hiroshi Doyu
Date: Wed Aug 22 2012 - 10:45:06 EST


Hi Marek,

Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> wrote @ Wed, 22 Aug 2012 14:04:26 +0200:

> Hi Hiroshi,
>
> On Wednesday, August 22, 2012 12:20 PM Hiroshi Doyu wrote:
>
> > The commit e9da6e9 "ARM: dma-mapping: remove custom consistent dma
> > region" breaks the compatibility with existing drivers. This causes
> > the following kernel oops(*1). That driver has called dma_pool_alloc()
> > to allocate memory from the interrupt context, and it hits
> > BUG_ON(in_interrpt()) in "get_vm_area_caller()". This patch seris
> > fixes this problem with making use of the pre-allocate atomic memory
> > pool which DMA is using in the same way as DMA does now.
> >
> > Any comment would be really appreciated.
>
> I was working on the similar patches, but You were faster. ;-)

Thank you for reviewing my patches.

> Basically the patch no 1 and 2 are fine, but I don't like the changes proposed in
> patch 3 and 4. You should not alter the attributes provided by the user nor make any
> assumptions that such attributes has been provided - drivers are allowed to call
> dma_alloc_attrs() directly. Please rework your patches to avoid such
> approach.

Sure. I'll send the series again later.

Instead of making use of DMA_ATTR_NO_KERNEL_MAPPING, I use the
following "__in_atomic_pool()" to see if buffer comes from atomic or
not at freeing.