Skip to contentSkip to conversation

proper way to reserve a chunk of memory at the top of the kernel?

DISCUSSION Chris Friesen 2 participants 2 messages Jul 14, 2009 – Jul 20, 2009

lore
Share & tools
lore
#0 lore raw

I have a powerpc board with 512BM of memory. The BIOS has a chunk of memory at the top end of physical memory which it does not zero out over a reboot.

What's the proper way to tell linux that this chunk of physical memory should be ignored (so that we can access it later without worrying that Linux will try to allocate it)? Should I be calling

lmb_reserve(lmb_end_of_DRAM() - size, size);

in early_reserve_mem() or is there a better mechanism?

For comparison, in an older kernel this was done in set_phys_avail(), by calling mem_pieces_remove(&phys_avail, total_lowmem - size, size, 1);

Thanks,

Chris

#1 lore raw
Quoted 11 lines · Chris Friesen

I have a powerpc board with 512BM of memory. The BIOS has a chunk of memory at the top end of physical memory which it does not zero out over a reboot.

What's the proper way to tell linux that this chunk of physical memory should be ignored (so that we can access it later without worrying that Linux will try to allocate it)? Should I be calling

lmb_reserve(lmb_end_of_DRAM() - size, size);

in early_reserve_mem() or is there a better mechanism?

The device-tree blob contains a special "reserve map" in the header, which automatically turns into calls to lmb_reserve() early during boot, so putting your special region in that map should be the right way to do what you want without special code.

Quoted 2 lines

For comparison, in an older kernel this was done in set_phys_avail(), by calling mem_pieces_remove(&phys_avail, total_lowmem - size, size, 1);

Cheers,
Ben.

Quoted 7 lines

Thanks,

Chris
_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev