x86: Use memblock to replace early_res
1. replace find_e820_area with memblock_find_in_range 2. replace reserve_early with memblock_x86_reserve_range 3. replace free_early with memblock_x86_free_range. 4. NO_BOOTMEM will switch to use memblock too. 5. use _e820, _early wrap in the patch, in following patch, will replace them all 6. because memblock_x86_free_range support partial free, we can remove some special care 7. Need to make sure that memblock_find_in_range() is called after memblock_x86_fill() so adjust some calling later in setup.c::setup_arch() -- corruption_check and mptable_update -v2: Move reserve_brk() early Before fill_memblock_area, to avoid overlap between brk and memblock_find_in_range() that could happen We have more then 128 RAM entry in E820 tables, and memblock_x86_fill() could use memblock_find_in_range() to find a new place for memblock.memory.region array. and We don't need to use extend_brk() after fill_memblock_area() So move reserve_brk() early before fill_memblock_area(). -v3: Move find_smp_config early To make sure memblock_find_in_range not find wrong place, if BIOS doesn't put mptable in right place. -v4: Treat RESERVED_KERN as RAM in memblock.memory. and they are already in memblock.reserved already.. use __NOT_KEEP_MEMBLOCK to make sure memblock related code could be freed later. -v5: Generic version __memblock_find_in_range() is going from high to low, and for 32bit active_region for 32bit does include high pages need to replace the limit with memblock.default_alloc_limit, aka get_max_mapped() -v6: Use current_limit instead -v7: check with MEMBLOCK_ERROR instead of -1ULL or -1L -v8: Set memblock_can_resize early to handle EFI with more RAM entries -v9: update after kmemleak changes in mainline Suggested-by:David S. Miller <davem@davemloft.net> Suggested-by:
Benjamin Herrenschmidt <benh@kernel.crashing.org> Suggested-by:
Thomas Gleixner <tglx@linutronix.de> Signed-off-by:
Yinghai Lu <yinghai@kernel.org> Signed-off-by:
H. Peter Anvin <hpa@zytor.com>
Showing
- arch/x86/Kconfig 3 additions, 6 deletionsarch/x86/Kconfig
- arch/x86/include/asm/e820.h 8 additions, 6 deletionsarch/x86/include/asm/e820.h
- arch/x86/kernel/check.c 9 additions, 7 deletionsarch/x86/kernel/check.c
- arch/x86/kernel/e820.c 53 additions, 106 deletionsarch/x86/kernel/e820.c
- arch/x86/kernel/head.c 2 additions, 1 deletionarch/x86/kernel/head.c
- arch/x86/kernel/head32.c 4 additions, 2 deletionsarch/x86/kernel/head32.c
- arch/x86/kernel/head64.c 3 additions, 0 deletionsarch/x86/kernel/head64.c
- arch/x86/kernel/mpparse.c 3 additions, 2 deletionsarch/x86/kernel/mpparse.c
- arch/x86/kernel/setup.c 33 additions, 13 deletionsarch/x86/kernel/setup.c
- arch/x86/kernel/setup_percpu.c 0 additions, 6 deletionsarch/x86/kernel/setup_percpu.c
- arch/x86/mm/numa_64.c 5 additions, 4 deletionsarch/x86/mm/numa_64.c
- mm/bootmem.c 3 additions, 0 deletionsmm/bootmem.c
- mm/page_alloc.c 15 additions, 35 deletionsmm/page_alloc.c
- mm/sparse-vmemmap.c 0 additions, 11 deletionsmm/sparse-vmemmap.c
Loading
Please register or sign in to comment