Re: [PATCH 0/2] x86/setup: consolidate early memory reservations

From: Baoquan He
Date: Fri Jan 15 2021 - 06:44:07 EST


On 01/15/21 at 10:32am, Mike Rapoport wrote:
> From: Mike Rapoport <rppt@xxxxxxxxxxxxx>
>
> Hi,
>
> David noticed that we do some of memblock_reserve() calls after allocations
> are possible:
>
> https://lore.kernel.org/lkml/6ba6bde3-1520-5cd0-f987-32d543f0b79f@xxxxxxxxxx

Thanks for CC-ing me, so I think the above patch from Roman is dangerous.
KASLR does put kernel randomly in a place, but we did a brutal parse to
get SRAT table so that we know where is hotpluggable area during boot
decompression stage. In kernel, at the beginning, we don't know that
before ACPI init. Roman's patch is wrong if I don't miss something.

I will add comment in that thread.

Thanks
Baoquan

>
> For now there is no actual problem because in top-down mode we allocate
> from the end of the memory and in bottom-up mode we allocate above the
> kernel image. But there is a patch in the mm tree that allow bottom-up
> allocations below the kernel:
>
> https://lore.kernel.org/lkml/20201217201214.3414100-2-guro@xxxxxx
>
> and with this change we may get a memory corruption if an allocation steps
> on some of the firmware areas that are yet to be reserved.
>
> The below patches consolidate early memory reservations done during
> setup_arch() so that memory used by firmware, bootloader, kernel text/data
> and the memory that should be excluded from the available memory for
> whatever other reason is reserved before memblock allocations are possible.
>
> The patches are vs v5.11-rc3-mmots-2021-01-12-02-00 as I think they are
> prerequisite for the memblock bottom-up changes, but if needed I can rebase
> then on another tree.
>
> Mike Rapoport (2):
> x86/setup: consolidate early memory reservations
> x86/setup: merge several reservations of start of the memory
>
> arch/x86/kernel/setup.c | 85 +++++++++++++++++++++--------------------
> 1 file changed, 43 insertions(+), 42 deletions(-)
>
> --
> 2.28.0
>