Hi,
The size allocated to DMA zone is fixed to 32Mo (arch/m68k/mm/cf-mmu.c)
so the "normal" zone ( which is total RAM - DMA ) becomes negative
changing this size allows booting to go forth ( I still have a rootfs problem, so I don't know yet the side effects )
ok
I simply misspelled the flash mapping space in my command line ( I'm using colilo)
using "physmap-flash.0" instead of old "phys_mapped_flash" did it
I allocated 16Mo to DMA (and thus 16 to Normal zone)
Can you show me a snippet of the lines of code you changed, please??
Here it is :
(from arch/m68k/mm/cf-mmu.c)
--- cf-mmu.c 2009-04-17 12:27:19.101646700 +0200
+++ arch/m68k/mm/cf-mmu.c 2009-04-15 09:00:24.757896700 +0200
@@ -130,7 +130,7 @@
/* allocate the bottom 32M (0x40x 0x41x) to DMA - head.S marks them NO CACHE */
/* JKM - this should be changed to allocate from the TOP (0x4f,0x4e) but the
* allocator is being a bit challenging */
- zones_size[ZONE_DMA] = (32*1024*1024) >> PAGE_SHIFT;
+ zones_size[ZONE_DMA] = (16*1024*1024) >> PAGE_SHIFT;
/* allocate the rest to NORMAL - head.S marks them CACHE */
zones_size[ZONE_NORMAL] = (((unsigned long)high_memory - PAGE_OFFSET) >> PAGE_SHIFT) - zones_size[0];
I'm working on the base distribution ( from Freescale 08/08/2008 ) and just try to evaluate which effort it would be to switch to 2.6.25 kernel.
I did not take the latest patches from gpp where this line has been changed,
(linux-2.6.25-m5445x-dma-mem-alloc.patch) because this patch allocates a 16MB page (so it is 5444x related) and is tied to changes I don't have time to figure out what they may results in yet.
but the change itself is much cleaner :
- /* allocate the bottom 32M (0x40x 0x41x) to DMA - head.S marks them NO CACHE */
- /* JKM - this should be changed to allocate from the TOP (0x4f,0x4e) but the
- * allocator is being a bit challenging */
- zones_size[ZONE_DMA] = (32*1024*1024) >> PAGE_SHIFT;
-
- /* allocate the rest to NORMAL - head.S marks them CACHE */
- zones_size[ZONE_NORMAL] = (((unsigned long)high_memory - PAGE_OFFSET) >> PAGE_SHIFT) - zones_size[0];
-
+ zones_size[ZONE_DMA] = CONFIG_DMA_SIZE >> PAGE_SHIFT;
+ zones_size[ZONE_NORMAL] = (((unsigned long)high_memory -
+ PAGE_OFFSET) >> PAGE_SHIFT) -
+ zones_size[ZONE_DMA];
but is tied to CONFIG_DMA_SIZE which turn to modify code in early startup ( and Kconfig )...and digging GPP patches feds me up.
I could'nt find the kernel-2.6.25-mcfv4e.spec.in containing this patch anywhere.
Could you tell me which environment you're working with?
Thanks,