[PATCH v2] memblock: add no-map alloc functions

From: skseofh
Date: Tue Apr 16 2024 - 08:07:04 EST



> > From: Daero Lee <daero_le.lee@xxxxxxxxxxx>
> >
> > Like reserved-memory with the no-map property, there are memory regions
> > need to be allocated in memblock.memory marked with the
> > MEMBLOCK_NOMAP flag, but sholud not be allocated in memblock.reserved.
>
> Can you please explain your use case?
> Why do you need this functionality?
Thank you for your comments.
I added a example to the commit message.

> > So, functions were added that find the required memory area in
> > memblock.memory, but do not allocate it to memblock.reserved.
> >
> > The early_init_dt_alloc_reserved_memory_arch function was modified
> > using the no-map alloc function.
> >
> > Signed-off-by: Daero Lee <daero_le.lee@xxxxxxxxxxx>
> > ---
> > drivers/of/of_reserved_mem.c | 9 +++--
> > mm/memblock.c | 78 ++++++++++++++++++++++++++++++++++++
> > 2 files changed, 84 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
> > index 8236ecae2953..504f2f60689c 100644
> > --- a/drivers/of/of_reserved_mem.c
> > +++ b/drivers/of/of_reserved_mem.c
> > @@ -40,15 +40,18 @@ static int __init early_init_dt_alloc_reserved_memory_arch(phys_addr_t size,
> >
> > end = !end ? MEMBLOCK_ALLOC_ANYWHERE : end;
> > align = !align ? SMP_CACHE_BYTES : align;
> > - base = memblock_phys_alloc_range(size, align, start, end);
> > + if (nomap) {
> > + base = memblock_phys_alloc_range_nomap(size, align, start, end);
> > + } else {
> > + base = memblock_phys_alloc_range(size, align, start, end);
> > + }
> > +
>
> This changes behaviour of internal function, what effect will it have on
> the users?
I added explanation about this to the commit message, too.

Thank you.