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. This > is rather wasteful for boards with 512MB of memory. SPARSEMEM look like what I 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 always > end with sparse_index_alloc calling alloc_bootmem_node which fails to allocate > 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 figure 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. -Matt