>From df753d7d9426b4d2a5518958d281be2985ccd40d Mon Sep 17 00:00:00 2001 From: zijun_hu Date: Wed, 27 Jul 2016 12:13:37 +0800 Subject: [PATCH 2/2] mm: temporary patch for fix memblock issue test temporary patch for fix memblock issue test Signed-off-by: zijun_hu --- arch/arm64/mm/init.c | 7 +++++++ include/linux/memblock.h | 1 + mm/memblock.c | 25 +++++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index d45f862..0db80bb 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -326,6 +326,13 @@ void __init bootmem_init(void) high_memory = __va((max << PAGE_SHIFT) - 1) + 1; memblock_dump_all(); + + if (!memblock_debug) + __memblock_dump_all(); + /* + * extern void memblock_patch_verify(void); + */ + memblock_patch_verify(); } #ifndef CONFIG_SPARSEMEM_VMEMMAP diff --git a/include/linux/memblock.h b/include/linux/memblock.h index 3106ac1..c62df1e 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h @@ -340,6 +340,7 @@ bool memblock_is_reserved(phys_addr_t addr); bool memblock_is_region_reserved(phys_addr_t base, phys_addr_t size); extern void __memblock_dump_all(void); +extern void memblock_patch_verify(void); static inline void memblock_dump_all(void) { diff --git a/mm/memblock.c b/mm/memblock.c index e95f95f..5c179ae 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -1652,6 +1652,31 @@ void __init_memblock __memblock_dump_all(void) memblock_dump(&memblock.reserved, "reserved"); } +void __init_memblock memblock_patch_verify(void) +{ + u64 i; + phys_addr_t this_start, this_end; + + pr_info("in %s: memory\n", __func__); + for_each_mem_range_rev(i, &memblock.memory, NULL, NUMA_NO_NODE, + MEMBLOCK_NONE, &this_start, &this_end, NULL) + pr_info("[%#016llx]\t[%#016llx-%#016llx]\n", + i, this_start, this_end); + + pr_info("in %s: reserved\n", __func__); + for_each_mem_range_rev(i, &memblock.reserved, NULL, NUMA_NO_NODE, + MEMBLOCK_NONE, &this_start, &this_end, NULL) + pr_info("[%#016llx]\t[%#016llx-%#016llx]\n", + i, this_start, this_end); + + pr_info("in %s: memory X reserved\n", __func__); + for_each_mem_range_rev(i, &memblock.memory, &memblock.reserved, + NUMA_NO_NODE, MEMBLOCK_NONE, + &this_start, &this_end, NULL) + pr_info("[%#016llx]\t[%#016llx-%#016llx]\n", + i, this_start, this_end); +} + void __init memblock_allow_resize(void) { memblock_can_resize = 1; -- 1.9.1