On Tue, 04 Jul 2006 10:03:35 -0700, Chad Reese <kreese@caviumnetworks.com>
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
|