Linux内存从0到1学习笔记(6.3,物理内存初始化之内存基本数据结构初始化)

Posted 高桐@BILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内存从0到1学习笔记(6.3,物理内存初始化之内存基本数据结构初始化)相关的知识,希望对你有一定的参考价值。

写在前面

这部分主要介绍,bootmem_init()内存基本数据结构初始化,如内存节点,内存域。

linux_mainline-5.17.0/arch/arm64/mm/init.c

321  void __init bootmem_init(void)
322  
323  	unsigned long min, max;
324     //获取最大最小页号;
325  	min = PFN_UP(memblock_start_of_DRAM());
326  	max = PFN_DOWN(memblock_end_of_DRAM());
327     //若使能CONFIG_MEMTEST,并且传递的commandline中保护memtest关键字的话,内核会对没有使用的free memory做memtest,通过相关算法检测出存在问题的dram,并讲这些dram通过reserve_bad_mem保留起来不适用,从而保证系统能正常boot。
328  	early_memtest(min << PAGE_SHIFT, max << PAGE_SHIFT);
329  
330  	max_pfn = max_low_pfn = max;
331  	min_low_pfn = min;
332     //这部分不常用,主要是num

以上是关于Linux内存从0到1学习笔记(6.3,物理内存初始化之内存基本数据结构初始化)的主要内容,如果未能解决你的问题,请参考以下文章

Linux内存从0到1学习笔记(6.4,物理内存初始化之预留内存)

Linux内存从0到1学习笔记(6.8,物理内存初始化之buddy伙伴系统)

Linux内存从0到1学习笔记(六,物理内存初始化之四 --- 内存分配器)---持续更新

Linux内存从0到1学习笔记(六,物理内存初始化) --- 更新中

Linux内存从0到1学习笔记(6.10 物理内存初始化之vmalloc分配器)

Linux内存从0到1学习笔记(6.7,物理内存初始化之CMA初始化)