Hello, This patchset was posted quite a while ago but got lost during the korg disturbance and I forgot about it too. Thankfully, benh pinged me about testing this patchset yesterday, so here's the refreshed version. Changes from the last take[L] are, * Rebased on top of updated x86/memblock. * Acked-by's added & updated patches folded into the series. * 0001-memblock-Make-memblock_overlaps_region-static.patch: dropped as commit to make the same change is already upstream. (2d7d3eb2ba "mm/memblock.c: quiet sparse noise") * 0001-memblock-Fix-include-breakages-caused-by-24aa07882b.patch: rolled into the series. Also updated to handle openrisc. * 0002-memblock-Make-memblock_-add-remove-free-reserve-retu.patch: trivial update to handle addition of memblock_end_of_DRAM * 0005-memblock-Kill-sentinel-entries-at-the-end-of-static-.patch: updated to reflect POISON change by c9d8c3d089 "mm/memblock.c: avoid abuse of RED_INACTIVE" * 0006-memblock-Kill-memblock_init.patch: updated to include openrisc * 0013-memblock-s-memblock_analyze-memblock_allow_resize-an.patch: updated to include openrisc This patchset builds on the previous "memblock, x86: Allow node info in memblock and remove x86 specific memblock code" patchset[1], which now is in tip:x86/memblock. This patchset updates memblock so that it's easier to use, converts all archs which use early_node_map[] to use memblock instead, and kills early_node_map[]. Bootmem allocator is still looming there but this ensures a unified way forward where memblock is the universal early memory management mechanism. This cleans up the entanglement between memblock and early_node_map[] in the backend but API visible to archs is still a bit confusing and can use some cleanup and documentation once things settle down a bit. x86, powerpc and sparc are boot tested in several different configurations. On x86 allmod/noconfigs are compile tested. On all other archs except for score, defconfig + some variations are compile tested. This does touch a lot of archs but except for x86 and powerpc the changes are mostly trivial and as bulk of the changes involve updates to generic memblock code, it would be great if these can be routed through single tree (tip:x86/memblock). 0001-memblock-Fix-include-breakages-caused-by-24aa07882b.patch 0002-memblock-Make-memblock_-add-remove-free-reserve-retu.patch 0003-memblock-Use-memblock_reserve-in-memblock-internal-f.patch 0004-memblock-Add-__memblock_dump_all.patch 0005-memblock-Kill-sentinel-entries-at-the-end-of-static-.patch 0006-memblock-Kill-memblock_init.patch 0007-memblock-Separate-out-memblock_isolate_range-from-me.patch 0008-memblock-Reimplement-__memblock_remove-using-membloc.patch 0009-memblock-Make-memblock-functions-handle-overflowing-.patch 0010-memblock-Reimplement-memblock_enforce_memory_limit-u.patch 0011-powerpc-Cleanup-memblock-usage.patch 0012-memblock-Track-total-size-of-regions-automatically.patch 0013-memblock-s-memblock_analyze-memblock_allow_resize-an.patch 0014-memblock-Implement-memblock_add_node.patch 0015-powerpc-Use-HAVE_MEMBLOCK_NODE_MAP.patch 0016-sparc-Use-HAVE_MEMBLOCK_NODE_MAP.patch 0017-SuperH-Use-HAVE_MEMBLOCK_NODE_MAP.patch 0018-ia64-Use-HAVE_MEMBLOCK_NODE_MAP.patch 0019-mips-Use-HAVE_MEMBLOCK_NODE_MAP.patch 0020-s390-Use-HAVE_MEMBLOCK_NODE_MAP.patch 0021-score-Use-HAVE_MEMBLOCK_NODE_MAP.patch 0022-memblock-Kill-early_node_map.patch 0023-memblock-Reimplement-memblock-allocation-using-rever.patch 0001-0014 clean up and improve generic memblock code (powerpc update is to allow updates to generic code) so that it's easier for archs. e.g. memblock_init/analyze() are no longer necessary. 0015-0017 convert archs which were using memblock + early_node_map[] to use MEMBLOCK_HAVE_NODE_MAP. 0018-0021 convert archs which were using only early_node_map[] to MEMBLOCK_HAVE_NODE_MAP. 0022 kills now unused early_node_map[]. 0023 reimplements memblock allocator in sane way, which is possible with early_node_map[] gone. This patchset is available in the following git branch. git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git memblock-kill-early_node_map And diffstat follows. arch/arm/kernel/setup.c | 1 arch/arm/mm/init.c | 4 arch/ia64/Kconfig | 6 arch/ia64/mm/contig.c | 3 arch/ia64/mm/init.c | 4 arch/microblaze/include/asm/memblock.h | 14 arch/microblaze/kernel/prom.c | 3 arch/mips/Kconfig | 6 arch/mips/kernel/setup.c | 3 arch/mips/sgi-ip27/ip27-memory.c | 5 arch/openrisc/include/asm/memblock.h | 24 - arch/openrisc/kernel/prom.c | 3 arch/powerpc/Kconfig | 4 arch/powerpc/include/asm/memblock.h | 8 arch/powerpc/kernel/machine_kexec.c | 3 arch/powerpc/kernel/prom.c | 20 - arch/powerpc/mm/init_32.c | 4 arch/powerpc/mm/mem.c | 2 arch/powerpc/mm/numa.c | 10 arch/powerpc/mm/tlb_nohash.c | 1 arch/powerpc/platforms/embedded6xx/wii.c | 23 - arch/powerpc/platforms/ps3/mm.c | 1 arch/s390/Kconfig | 6 arch/s390/kernel/setup.c | 4 arch/score/Kconfig | 12 arch/score/kernel/setup.c | 4 arch/sh/Kconfig | 1 arch/sh/include/asm/memblock.h | 4 arch/sh/kernel/machine_kexec.c | 3 arch/sh/kernel/setup.c | 3 arch/sh/mm/Kconfig | 3 arch/sh/mm/init.c | 3 arch/sparc/Kconfig | 4 arch/sparc/include/asm/memblock.h | 8 arch/sparc/mm/init_64.c | 28 - arch/unicore32/kernel/setup.c | 1 arch/unicore32/mm/init.c | 4 arch/unicore32/mm/mmu.c | 1 arch/x86/Kconfig | 3 arch/x86/kernel/e820.c | 3 arch/x86/kernel/head32.c | 2 arch/x86/kernel/head64.c | 2 arch/x86/xen/enlighten.c | 2 drivers/iommu/intel-iommu.c | 1 include/linux/memblock.h | 116 +++-- include/linux/mm.h | 50 -- include/linux/mmzone.h | 8 include/linux/poison.h | 6 mm/memblock.c | 603 ++++++++++++++----------------- mm/page_alloc.c | 259 ------------- 50 files changed, 455 insertions(+), 841 deletions(-) -- tejun [L] http://thread.gmane.org/gmane.linux.kernel.cross-arch/10464 [1] https://lkml.org/lkml/2011/7/12/95 -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html