On Thu, May 18, 2006 at 10:58:48AM -0700, Chad Reese wrote:
> Hello All,
> I've spent the last few days trying to get SPARSEMEM to work on a 64bit Mips
> kernel. The processor I'm using has large wholes in its memory map.
> Memory layout:
> 0 - 0x10000000 First 256MB
> 0x410000000 - 0x420000000 Second 256MB
> 0x20000000 - ? The rest of memory
> Up until now I've used the flat memory model and not mapped the 2nd 256MB.
> is rather wasteful for boards with 512MB of memory. SPARSEMEM look like what
Yep, SPARSEMEM is what you want. BTW, doublecheck your line wrap
settings on your mailer...they're messed up.
> need, but I've been unable to get it working. My attempts to configure it
> end with sparse_index_alloc calling alloc_bootmem_node which fails to
> 4KB. In prom_init I've added memory using add_memory_region.
But where have you added everything else? Where are you registering the
sparsemem and initializing it? It sounds like you are either getting
an invalid node passed into the alloc_bootmem_node or you are calling
the bootmem allocator much later and it is failing.
> Are there any reasonably easy to follow implementations of sparsemem? I
None that I know of, excpet for the i386, ia64, and powerpc
implementations. i386 is fairly straightforward except for all
the EFI magic.
> I'm missing something very basic, but perusal of Mips and the other
> architectures haven't helped much.
> My baseline is linux-mips 2.6.14.
> Any help would be appreciated,
I suggest working back from your bootmem allocation failure to
understand why that is failing.