memblock_free函数 的作用是 释放内存 , 从 " 预留内存区域 " 中, 删除一块 内存块 ; memblock_free函数参数说明 : phys_addr_t base参数 表示 要删除的内存区域的 起始地址 ; phys_addr_t size参数 表示 要删除的内存区域的 大小 ; 在memblock_free函数中 , 调用kmemleak_free_part_phys函数 , 计算 要...
第二阶段建立的是 memblock 1 memblock 的使用期限 从start_kernel->setup_arch->paging_init->bootmem_init->memblock_allow_resize 返回到 kernel_init(进程1) -> free_initmem memblock 相关的函数 都是 用 __init 修饰的, 在free_initmem 的时候会被释放掉所以就再也不能用 memblock_alloc 来申请内存了...
phys_addr_t size 参数 表示 要删除的内存区域的 大小 ; 在memblock_free 函数中 , 调用kmemleak_free_part_phys 函数 , 计算 要删除的 物理内存区域 的 终止地址 , 最后调用了 memblock_remove_range 函数 , 继续向后执行 ; memblock_...
此时page还在memblock管控,需要memblock释放。释放的函数是free_low_memory_core_early: mm_init //init/main.c mem_init(void) //arch/arm64/mm/init.c memblock_free_all(); void __init memblock_free_all(void) { unsigned long pages; free_unused_memmap(); reset_all_zones_managed_pages(); pages...
The call for memblock_phys_free() in try_remove_memory() does not balance any call to memblock_alloc() (or memblock_reserve() for that matter). There are no memblock_reserve() calls in mm/memory_hotplug.c, no memblock allocations possible after mm_core_init(), and even if memblock_ad...
extern int defer_free_memblock(void *unused); #endif2 changes: 1 addition & 1 deletion 2 init/main.c Original file line numberDiff line numberDiff line change @@ -1823,7 +1823,7 @@ static noinline void __init kernel_init_freeable(void) smp_init(); sched_init_smp(); #ifdef CONF...
memblock_free 函数是把一个逻辑块从memblock.reserved()中移除,即对标记的内存重新标记为可用。 int memblock_free(phys_addr_t base, phys_addr_t size) { memblock_dbg(" memblock_free: [%#016llx-%#016llx] %pF\n", (unsigned long long)base, ...