On Wed, 20 Sep 2006, Martin J. Bligh wrote:
Having something that's used in generic code that means random
things on different arches just seems like a recipe for disaster
to me.
ZONE_DMA is only used as ZONE_NORMAL if the architecture does not need ZONE_NORMAL because all of memory is reachable via DMA.
OK ... but requesting ZONE_DMA means what? DMAable for which device?
Is it always a floppy disk? on some platforms a PCI card? And how
is the VM meant to know what the device is capable of anyway?
I already explained that twice to you.
I think we all agree that the situation could be better.
Having an arch-specific definition of the limit is arbitrary and
useless, is it not? The limit is imposed by the device and its
driver, we're not communicating it into any sensible way into the
VM code, AFAICS. Unless we're pretending we never call it from
generic code, which seems woefully unlikely to me.
Its bad but its not useless. See how various arches use it.
Are we redefining ZONE_DMA to always be 16MB limit across all
architectures? At least that'd be consistent.
That wont work because many architectures use different limits. Maybe you should once in a while have a look at the sources.
Actually the desaster is cleaned up by this patch. A couple of architectures that were wrongly using ZONE_DMA now use ZONE_NORMAL.