Re: CMA broken in next-20120926

From: Thierry Reding
Date: Fri Sep 28 2012 - 02:11:08 EST


On Fri, Sep 28, 2012 at 02:43:30PM +0900, Minchan Kim wrote:
> On Thu, Sep 27, 2012 at 03:11:59PM -0700, Andrew Morton wrote:
> > On Thu, 27 Sep 2012 13:29:11 +0200
> > Thierry Reding <thierry.reding@xxxxxxxxxxxxxxxxx> wrote:
> >
> > > Hi Marek,
> > >
> > > any idea why CMA might be broken in next-20120926. I see that there
> > > haven't been any major changes to CMA itself, but there's been quite a
> > > bit of restructuring of various memory allocation bits lately. I wasn't
> > > able to track the problem down, though.
> > >
> > > What I see is this during boot (with CMA_DEBUG enabled):
> > >
> > > [ 0.266904] cma: dma_alloc_from_contiguous(cma db474f80, count 64, align 6)
> > > [ 0.284469] cma: dma_alloc_from_contiguous(): memory range at c09d7000 is busy, retrying
> > > [ 0.293648] cma: dma_alloc_from_contiguous(): memory range at c09d7800 is busy, retrying
> > > ...
> > > [ 2.648619] DMA: failed to allocate 256 KiB pool for atomic coherent allocation
> > > ...
> > > [ 4.196193] WARNING: at /home/thierry.reding/src/kernel/linux-ipmp.git/arch/arm/mm/dma-mapping.c:485 __alloc_from_pool+0xdc/0x110()
> > > [ 4.207988] coherent pool not initialised!
> > >
> > > So the pool isn't getting initialized properly because CMA can't get at
> > > the memory. Do you have any hints as to what might be going on? If it's
> > > any help, I started seeing this with next-20120926 and it is in today's
> > > next as well.
> > >
> >
> > Bart and Minchan have made recent changes to CMA. Let us cc them.
>
> Hi all,
>
> I have no time now so I look over the problem during short time
> so I mighte be wrong. Even I should leave the office soon and
> Korea will have long vacation from now on so I will be off by next week.
> So it's hard to reach on me.
>
> I hope this patch fixes the bug. If this patch fixes the problem
> but has some problem about description or someone has better idea,
> feel free to modify and resend to akpm, Please.
>
> Thierry, Could you test below patch?
>
> >From 24a547855fa2bd4212a779cc73997837148310b3 Mon Sep 17 00:00:00 2001
> From: Minchan Kim <minchan@xxxxxxxxxx>
> Date: Fri, 28 Sep 2012 14:28:32 +0900
> Subject: [PATCH] revert mm: compaction: iron out isolate_freepages_block()
> and isolate_freepages_range()
>
> [1] made bug on CMA.
> The nr_scanned should be never equal to total_isolated for successful CMA.
> This patch reverts part of the patch.
>
> [1] mm: compaction: iron out isolate_freepages_block() and isolate_freepages_range()
>
> Cc: Mel Gorman <mgorman@xxxxxxx>
> Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx>
> ---
> mm/compaction.c | 29 ++++++++++++++++-------------
> 1 file changed, 16 insertions(+), 13 deletions(-)

With that patch applied I see this now:

[ 0.255177] DMA: preallocated 256 KiB pool for atomic coherent allocations

so this fixes the bug for me.

Tested-by: Thierry Reding <thierry.reding@xxxxxxxxxxxxxxxxx>

Attachment: pgp00000.pgp
Description: PGP signature