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学习笔记(六,物理内存初始化) --- 更新中