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