Dear uClinux Developers,

I am not sure if this is already offtopic here.
As per my knowledge the ZONE_DMA memory zone is a 16-Mbyte's memory area within 0x0 - 0x00ffffff which should be used for any allocation which needs to be used in DMA transfers. This zone actually is a result of legacy ISA devices which can do DMA transfers only from the lower 16 Mbyte's of memory.

I wonder whether it might be possible to shift this memory zone to some different location, like at the end of memory? I know that the size of the zone can be modified via linux/arch/<myarch>/mm/init.c and the zones array. But how about the positioning of this zone? I know that something like this was done in the blackfin architecture which is only present in the standard linux tree. But they handle all memory allocations by their own simple memory allocator which doesn't look really performant. (see arch/blackfin/kernel/dma-mapping.c @ function __alloc_dma_pages for reference)

Concretely spoken I am dealing with m68knommu/coldfire architecture. I want to move the DMA zone to a different location because Coldfire MCF548x, respectively its cache doesn't support bus snooping. So I simply want to reserve a zone of, let's say, 8 MByte at the end of my main memory for all DMA allocations. Once this is done I want to exclude this memory area from caching mechanisms.ยด

Another solution:
Would it be better to move the linux kernel to a different location in memory (e.g. @ 0x01000000) and keep the ZONE_DMA zone @ 0x0 - 0x00ffffff?

With best regards,
Markus Franke


_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to