Messages in this thread Patch in this message | | | Date | Sun, 13 Apr 2008 00:33:21 +0200 | From | Johannes Weiner <> | Subject | [patch 2/2] bootmem: Node-setup agnostic free_bootmem() |
| |
Make free_bootmem() look up the node holding the specified address range which lets it work transparently on single-node and multi-node configurations.
Signed-off-by: Johannes Weiner <hannes@saeurebad.de> CC: Yinghai Lu <yhlu.kernel@gmail.com> CC: Andi Kleen <ak@suse.de> CC: Yasunori Goto <y-goto@jp.fujitsu.com> CC: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> CC: Ingo Molnar <mingo@elte.hu> CC: Christoph Lameter <clameter@sgi.com> CC: Andrew Morton <akpm@linux-foundation.org> ---
Patch tested on x86_32 uma.
Index: linux-2.6/mm/bootmem.c =================================================================== --- linux-2.6.orig/mm/bootmem.c +++ linux-2.6/mm/bootmem.c @@ -421,7 +421,15 @@ int __init reserve_bootmem(unsigned long void __init free_bootmem(unsigned long addr, unsigned long size) { - free_bootmem_core(NODE_DATA(0)->bdata, addr, size); + bootmem_data_t *bdata; + + list_for_each_entry (bdata, &bdata_list, list) { + if (addr < bdata->node_boot_start) + continue; + free_bootmem_core(bdata, addr, size); + return; + } + BUG(); } unsigned long __init free_all_bootmem(void)
| |