> On Aug 25, 2023, at 19:18, Usama Arif <usama.arif@xxxxxxxxxxxxx> wrote: > > For reserved memory regions marked with this flag, > reserve_bootmem_region is not called during memmap_init_reserved_pages. > This can be used to avoid struct page initialization for > regions which won't need them, for e.g. hugepages with > HVO enabled. > > Signed-off-by: Usama Arif <usama.arif@xxxxxxxxxxxxx> Reviewed-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> One nit below. > --- > include/linux/memblock.h | 10 ++++++++++ > mm/memblock.c | 32 +++++++++++++++++++++++++++----- > 2 files changed, 37 insertions(+), 5 deletions(-) > > diff --git a/include/linux/memblock.h b/include/linux/memblock.h > index f71ff9f0ec81..6d681d053880 100644 > --- a/include/linux/memblock.h > +++ b/include/linux/memblock.h > @@ -40,6 +40,8 @@ extern unsigned long long max_possible_pfn; > * via a driver, and never indicated in the firmware-provided memory map as > * system RAM. This corresponds to IORESOURCE_SYSRAM_DRIVER_MANAGED in the > * kernel resource tree. > + * @MEMBLOCK_RSRV_NOINIT_VMEMMAP: memory region for which struct pages are > + * not initialized (only for reserved regions). We have a more detailed explanation here. > */ > enum memblock_flags { > MEMBLOCK_NONE = 0x0, /* No special request */ > @@ -47,6 +49,8 @@ enum memblock_flags { > MEMBLOCK_MIRROR = 0x2, /* mirrored region */ > MEMBLOCK_NOMAP = 0x4, /* don't add to kernel direct mapping */ > MEMBLOCK_DRIVER_MANAGED = 0x8, /* always detected via a driver */ > + /* don't initialize struct pages associated with this reserver memory block */ Those comments right after the macros here seem like a brief explanation. To keep the consistent with others, maybe "don't initialize struct pages" is enough? At least, a detailed one is redundant and repetitive compared with the above one. > + MEMBLOCK_RSRV_NOINIT_VMEMMAP = 0x10, > };