A question about memblock.reserved

Chan Kim ckim at etri.re.kr
Wed Jun 29 00:39:34 EDT 2022


Hi Wonhyuk, 
Thank you for the reply (I found it this morning :))
Yes, I saw your blog and it helped. And I later found in a book that this memblock puts the kernel image, initrd, page tables, dtb,.. and the "reserved-memory" regions from the dtb in its memblock.reserved regions. 
Have a nice day!
Chan Kim

>>-----Original Message-----
>>From: Wonhyuk Yang <vvghjk1234 at gmail.com>
>>Sent: Friday, June 24, 2022 3:41 PM
>>To: Chan Kim <ckim at etri.re.kr>
>>Cc: kernelnewbies <kernelnewbies at kernelnewbies.org>
>>Subject: Re: A question about memblock.reserved
>>
>>On Thu, Jun 23, 2022 at 2:25 PM Chan Kim <ckim at etri.re.kr> wrote:
>>>
>>> I mm/memblock.c I see this struct memblock memblock which is initialized
>>with empty list.
>>>
>>> static struct memblock_region
>>> memblock_memory_init_regions[INIT_MEMBLOCK_REGIONS]
>>> __initdata_memblock; static struct memblock_region
>>> memblock_reserved_init_regions[INIT_MEMBLOCK_RESERVED_REGIONS]
>>> __initdata_memblock;
>>>
>>> struct memblock memblock __initdata_memblock = {
>>>     .memory.regions     = memblock_memory_init_regions,
>>>     .memory.cnt     = 1,    /* empty dummy entry */
>>>     .memory.max     = INIT_MEMBLOCK_REGIONS,
>>>     .memory.name        = "memory",
>>>     .reserved.regions   = memblock_reserved_init_regions,
>>>     .reserved.cnt       = 1,    /* empty dummy entry */
>>>     .reserved.max       = INIT_MEMBLOCK_RESERVED_REGIONS,
>>>     .reserved.name      = "reserved",
>>>     .bottom_up      = false,
>>>     .current_limit      = MEMBLOCK_ALLOC_ANYWHERE,
>>> };
>>>
>>> My question is : we can speicify "reserved-memory" in the device tree.
>>Some drivers use the reserved memory for its own use.
>>> Then, are the 'reserved-memory' regions are put into this
>>memblock.reserved  regions during the boot process?(I mean during dtb
>>parsing).
>>>
>>
>>Yes, reserved memblock is initialized while scanning the fdt.
>>I'll attach some call graph below and I hope it helps you.
>>
>>setup_arch ()
>>  arm64_memblock_init ()
>>    early_init_fdt_scan_reserved_mem ()
>>      fdt_init_reserved_mem ()
>>        fdt_scan_reserved_mem ()
>>          __reserved_mem_reserve_reg ()
>>            early_init_dt_reserve_memory_arch ()
>>              memblock_reserve ()
>>
>>Plus, I written some *scribbled* notes about this in Korean.
>>I don't know if it will help, but I will attach it below.
>>
>>https://kjhg4321.gitbook.io/doodle/







More information about the Kernelnewbies mailing list