Skip to contentSkip to conversation

Any examples / docs for getting SPARSEMEM to work?

DISCUSSION Chad Reese 3 participants 3 messages May 18, 2006 – Jun 13, 2006 MIPS

lore
Share & tools
lore

Chad Reese

author
#0 lore raw

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 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.

Are there any reasonably easy to follow implementations of sparsemem? I figure 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,

Chad

Signature · 2 lines
Chad Reese <[email protected]>
Cavium Networks
#1 lore raw
Quoted 5 lines · Chad Reese

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.

Quoted 7 lines

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.

Quoted 3 lines

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.

Quoted 1 line

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.

Quoted 6 lines

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

#2 lore raw
In reply to Chad Reese

Hi,

2006/5/18, Chad Reese <[email protected]>:

Quoted 8 lines

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

Sorry for the delay, I didn't notice your post before...

Just out of curiosity, what value for PAGE_OFFSET do you use ? In other word how do you convert a physical address into a virtual one if you use these two memories ?

Could you show us the virtual address ranges for each memories ?

Quoted 18 lines

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 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.

Are there any reasonably easy to follow implementations of sparsemem? I figure 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,

Chad

Signature · 1 line
              Franck