Follow-up on "WARNING: at arch/arm/mm/consistent.c:368 dma_free_coherent"

Greg Lee glee-list at
Mon Sep 21 20:00:51 EDT 2009

I'm following up on an old thread
from September 2008 between Russell King and Mikael Pettersson
regarding dmabounce.

Mikael Pettersson writes:

>I've now traced the actions in dmabounce.c, and I _think_ I
>understand what's going on.


>Tracing dmabounce.c:map_single() showed that bouncing never triggered
>due to the dma_mask, because clearly no page ever resided above it.
>However, mach-ixp4xx/common-pci.c:dma_needs_bounce() returned true
>whenever the very last page at 64MB-4096 was accessed. dma_needs_bounce()
>tests dma_addr + size >= SZ_64M, but that's actually off-by-one.
>Changing it to dma_addr + size - 1 >= SZ_64M disabled the bounces,
>but also caused the system hang to reappear.

I then found a recently updated patch from Mikael that appears to
address this problem here

This updated patch does not appear to account for the 4K region at the
end of the 64MB PCI window that I mentioned above.  Does this region
in fact need to be accounted for?  Or has this now been handled


More information about the linux-arm-kernel mailing list