Re: Define CONFIG_BOUNCE to avoid useless inclusion of bounce bufferlogic.

From: Christoph Lameter
Date: Wed May 23 2007 - 13:15:38 EST


On Wed, 23 May 2007, Russell King wrote:

> > That is wrong. ppc should have ZONE_NORMAL and no ZONE_DMA.
> > Otherwise you cannot switch off ZONE_DMA and you cannot switch off
> > bounce. ZONE_DMA is a zone for exceptional allocs. If you do not have
> > those then you only have normal allocs -> ZONE_NORMAL.
>
> That sounds very wrong to me. Since about 1995 ARM has always placed
> all DMA-able memory in the DMA zone, and none in the normal zone.
>
> The reason for doing this is that normal allocations fall back to DMA
> allocations when the normal zone becomes full/empty. However, DMA
> allocations can never be satisfied by allocations from the normal zone.

Usually DMA is done via ZONE_NORMAL allocations. GFP_DMA allocs and
ZONE_DMA are for devices that cannot performa DMA to all of memory.

There is no need to fall back if you do not have such devices. So no need
for ZONE_DMA.

> Moreover, special casing the "doesn't use __GFP_DMA allocations on this
> machine so places all memory in ZONE_NORMAL" is just too complicated -
> I've no idea which of the 100+ ARM machine support currently merged
> into the Linux kernel uses __GFP_DMA allocations and which don't.

GFP_DMA allocations are an exception and that exception can be removed
from the core VM by not defining ZONE_DMA. You cannot switch off the
NORMAL zone.

> The DMA zone is for memory allocations _for_ _DMA_. If all your memory
> is DMA-able then it belongs in the DMA zone.

Nope. The DMA zone is for crappy DMA devices that can only use a portion
of memory.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/