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

From: Baoquan He
Date: Fri Jan 15 2021 - 06:57:54 EST


On 01/15/21 at 07:42pm, Baoquan He wrote:
> 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.

Sorry, I was wrong. Bottom up searching disregarding kernel end is
good optimization. Please ignore this noise.

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