From mboxrd@z Thu Jan 1 00:00:00 1970 From: linux@prisktech.co.nz (Tony Prisk) Date: Tue, 16 Oct 2012 21:13:22 +1300 Subject: dma_alloc_coherent fails in framebuffer In-Reply-To: <20121016075835.GF29125@suse.de> References: <1350192523.10946.4.camel@gitbox> <1350246895.11504.6.camel@gitbox> <20121015094547.GC29125@suse.de> <1350325704.31162.16.camel@gitbox> <1350366893.26424.5.camel@gitbox> <1350370207.26424.13.camel@gitbox> <20121016075835.GF29125@suse.de> Message-ID: <1350375202.31523.1.camel@gitbox> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, 2012-10-16 at 08:58 +0100, Mel Gorman wrote: > On Tue, Oct 16, 2012 at 07:50:07PM +1300, Tony Prisk wrote: > > > > > Why it caused a problem on that particular commit I don't know - but it > > > > > was reproducible by adding/removing it. > > > > > > > > > > > I finally found the link to this patch which caused the problem - and > > > may still be the cause of my problems :) > > > > > Blast, thanks. This was already identified as being a problem and "fixed" > in https://lkml.org/lkml/2012/10/5/164 but I missed that the fix did not > get picked up before RC1 after all the patches got collapsed together. I'm > very sorry about that, I should have spotted that it didn't make it through. > > > Any suggestions on how to fix this? > > > > Can you test this to be sure and if it's fine I'll push it to Andrew. > > ---8<--- > mm: compaction: Correct the strict_isolated check for CMA > > Thierry reported that the "iron out" patch for isolate_freepages_block() > had problems due to the strict check being too strict with "mm: compaction: > Iron out isolate_freepages_block() and isolate_freepages_range() -fix1". > It's possible that more pages than necessary are isolated but the check > still fails and I missed that this fix was not picked up before RC1. This > has also been identified in RC1 by Tony Prisk and should be addressed by > the following patch. > > Signed-off-by: Mel Gorman > --- > compaction.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index 2c4ce17..9eef558 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -346,7 +346,7 @@ static unsigned long isolate_freepages_block(struct compact_control *cc, > * pages requested were isolated. If there were any failures, 0 is > * returned and CMA will fail. > */ > - if (strict && nr_strict_required != total_isolated) > + if (strict && nr_strict_required > total_isolated) > total_isolated = 0; > > if (locked) I don't need to test that again.. thats exactly what I did to fix it myself :) Tested-by: Tony Prisk .. if needed. Nice to know I'm not completely bonkers. Thanks for your help Tony P