Subject: dma_alloc_coherent fails in framebuffer

From: [email-masked] (Tony Prisk)
Date: Mon, 15 Oct 2012 09:34:55 +1300

On Sun, 2012-10-14 at 18:28 +1300, Tony Prisk wrote:
> Up until 07 Oct, drivers/video/wm8505-fb.c was working fine, but on the
> 11 Oct when I did another pull from linus all of a sudden
> dma_alloc_coherent is failing to allocate the framebuffer any longer.
> 
> I did a quick look back and found this:
> 
> ARM: add coherent dma ops
> 
> arch_is_coherent is problematic as it is a global symbol. This
> doesn't work for multi-platform kernels or platforms which can support
> per device coherent DMA.
> 
> This adds arm_coherent_dma_ops to be used for devices which connected
> coherently (i.e. to the ACP port on Cortex-A9 or A15). The arm_dma_ops
> are modified at boot when arch_is_coherent is true.
> 
> Signed-off-by: Rob Herring <[email-masked]>
> Cc: Russell King <[email-masked]>
> Cc: Marek Szyprowski <[email-masked]>
> Signed-off-by: Marek Szyprowski <[email-masked]>
> 
> 
> This is the only patch lately that I could find (not that I would claim
> to be any good at finding things) that is related to the problem. Could
> it have caused the allocations to fail?
> 
> Regards
> Tony P

Have done a bit more digging and found the cause - not Rob's patch so
apologies.

The cause of the regression is this patch:

>>From f40d1e42bb988d2a26e8e111ea4c4c7bac819b7e Mon Sep 17 00:00:00 2001
From: Mel Gorman <[email-masked]>
Date: Mon, 8 Oct 2012 16:32:36 -0700
Subject: [PATCH 2/3] mm: compaction: acquire the zone->lock as late as
 possible

Up until then, the framebuffer allocation with dma_alloc_coherent(...)
was fine. From this patch onwards, allocations fail.

I don't know how this patch would effect CMA allocations, but it seems
to be causing the issue (or at least, it's caused an error in
arch-vt8500 to become visible).

Perhaps someone who understand -mm could explain the best way to
troubleshoot the cause of this problem?

Regards
Tony P