On Tue, 04 Jul 2006 10:03:35 -0700, Chad Reese <kreese@xxxxxxxxxxxxxxxxxx> wrote: > I believe Ralf committed a cleaned up version of the patch I created > 5/23/2006. It called memory_present() after the first bootmap memory was > created. I've been using this and dynamic sparsemem on Mips64 for a > while now. It is not enough. If you want to use SPARSEMEM_EXTREME, do not call memory_present() _before_ reserve_bootmem(). For SPARSEMEM_EXTREME, memory_present() try to allocate bootmem, but first area of bootmem must be reserved for bootmap before any allocation. The alloc_bootmem_node try to allocate upper (>16MB) page first, then try lower page. So if the first memory area was smaller then 16MB SPARSEMEM_EXTREME would not work. Also, SPARSEMEM_STATIC will be a bit faster then SPARSEMEM_EXTREME. The mm/Kconfig warns about mem_section[] size, but static mem_section[] size is just 1KB for MIPS. No problem. :-) --- Atsushi Nemoto