Re: [RFC PATCH 0/4] x86_64/mm: remove bottom-up allocation style by pushing forward the parsing of mem hotplug info

From: Chao Fan
Date: Tue Jan 08 2019 - 05:06:43 EST


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
>
>
>