On Mon, Apr 15, 2024 at 11:24:48PM +0900, skseofh@xxxxxxxxx wrote: > 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? > 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? > if (!base) > return -ENOMEM; > > *res_base = base; > if (nomap) { > err = memblock_mark_nomap(base, size); > - if (err) > - memblock_phys_free(base, size); > } > > kmemleak_ignore_phys(base); -- Sincerely yours, Mike.