Jivin Markus Franke lays it down ... > 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.
Yes, despite the code you mention below, the mem_map will get allocated at the start of memory, the only was around this would be to look at discontiguous memory regions, or to see if you can delay calling free_bootmem(0x0, 0x00FFFFFF) until after the mem_map is allocated. This may not be possible if the main memory allocators have been kicked off, but have a look and see what you can do. x86 must change the location of mem_map or just dump it in DMA memory otherwise ? Perhaps you can specify where it should be allocated using a different routine or something, have a look around, Cheers, Davidm > 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 > > -- David McCullough, [EMAIL PROTECTED], Ph:+61 734352815 Secure Computing - SnapGear http://www.uCdot.org http://www.cyberguard.com _______________________________________________ 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
