Hi David,
Zitat von David McCullough <[EMAIL PROTECTED]>:
Look for the call to
free_bootmem(memory_start, memory_end - memory_start);
Bingo! That's exactly what I was looking for. :-)
Check the values for memory_start, this is where the pages are initially
freed for use by anyone.
memory_start is at 0x11AF000 which is behind the kernel image.
Basically, all the memory behind the kernel image gets freed up for
memory allocations. As the DMA zone is from 0x0 to 0x00FFFFFF there
was no memory available for the DMA slab allocator. This clarifies my
problem. :-)
However when I try to free up the DMA area (in a first step hardcoded)
by calling
free_bootmem(0x0, 0x00FFFFFF);
the kernel simply hangs during boot without even a line of output. I
seem to release some memory which is needed by linux.
However when I free only the first 15 MB of memory with
free_bootmem(0x100000, 0xF00000);
everything works fine. Is there something inside the first MByte of
RAM which is needed? I mean CONFIG_KERNELBASE equals to 0x01000000
which means everything linux needs should start from this memory
location.
Besides I reserve this boot mem_map by calling:
reserve_bootmem(memory_start, bootmap_size);
The boot mem_map is located right behind the kernel image. What is
this boot mem_map used for?
Also, not sure how you are planning to use this DMA zone, if it for
general kmalloc type use then that is ok, if you want dma_* routines to
use it perhaps have a look at:
linux-2.6.x/arch/frv/kernel/setup.c
linux-2.6.x/arch/frv/mb93090-mb00/pci-dma-nommu.c
and how it manages some consistent dma memory,
So far only kmalloc is being used. Thanks anyway for the hints above.
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