On Mon, Jan 07, 2019 at 04:24:41PM +0800, Pingfan Liu wrote: >Background about the defect of the current bottom-up allocation style, take >the following scenario: > | unmovable node | movable node | > | kaslr-kernel |subtree of pgtable for phy<->virt | > >Although kaslr-kernel can avoid to stain the movable node. But the >pgtable can still stain the movable node. That is a probability problem, >with low probability, but still exist. This patch tries to eliminate the >probability. With the previous patch, at the point of init_mem_mapping(), >memblock allocator can work with the knowledge of acpi memory hotmovable >info, and avoid to stain the movable node. As a result, >memory_map_bottom_up() is not needed any more. > Hi Pingfan, Tang Chen ever tried to do this before adding 'movable_node': commit e8d1955258091e4c92d5a975ebd7fd8a98f5d30f Author: Tang Chen <tangchen@xxxxxxxxxxxxxx> Date: Fri Feb 22 16:33:44 2013 -0800 acpi, memory-hotplug: parse SRAT before memblock is ready Then, Lu Yinghai tried to do the similar job, you can see: https://lwn.net/Articles/554854/ for more information. Hope that can help you. Thanks, Chao Fan > >Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> >Cc: Ingo Molnar <mingo@xxxxxxxxxx> >Cc: Borislav Petkov <bp@xxxxxxxxx> >Cc: "H. Peter Anvin" <hpa@xxxxxxxxx> >Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx> >Cc: Andy Lutomirski <luto@xxxxxxxxxx> >Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> >Cc: "Rafael J. Wysocki" <rjw@xxxxxxxxxxxxx> >Cc: Len Brown <lenb@xxxxxxxxxx> >Cc: linux-kernel@xxxxxxxxxxxxxxx > >Pingfan Liu (4): > acpi: change the topo of acpi_table_upgrade() > x86/setup: parse acpi to get hotplug info before init_mem_mapping() > x86/mm: set allowed range for memblock allocator > x86/mm: remove bottom-up allocation style for x86_64 > > arch/arm64/kernel/setup.c | 2 +- > arch/x86/kernel/setup.c | 17 ++++- > arch/x86/mm/init.c | 154 +++++++--------------------------------------- > arch/x86/mm/init_32.c | 123 ++++++++++++++++++++++++++++++++++++ > arch/x86/mm/mm_internal.h | 7 +++ > drivers/acpi/tables.c | 4 +- > include/linux/acpi.h | 5 +- > 7 files changed, 172 insertions(+), 140 deletions(-) > >-- >2.7.4 > > >