mm: alloc_pages

前言

alloc_pages 是 linux kernel 上 最重要的 内存分配函数了,其实现机制也比较复杂

函数原型是

#define alloc_pages(gfp_mask, order) \
		alloc_pages_node(numa_node_id(), gfp_mask, order)

代码流程

在 2.6.12 版本中

在 2.6.20 版本中
在这里插入图片描述

在 2.6.20 版本中

101.664615: Call trace: 101.664617: dump_backtrace+0xf0/0x140 101.664627: show_stack+0x18/0x28 101.664631: dump_stack_lvl+0x70/0xa4 101.664639: __kernel_unpoison_pages+0x16c/0x1ac 101.664647: post_alloc_hook+0x184/0x1ac 101.664653: prep_new_page+0x28/0x188 101.664658: get_page_from_freelist+0x1bb8/0x1d54 101.664664: __alloc_pages+0xe8/0x2cc 101.664670: __erofs_allocpage+0x88/0xb8 101.664677: z_erofs_do_read_page+0x8f0/0xcb4 101.664683: z_erofs_readahead+0x1f8/0x378 101.664690: read_pages+0x80/0x38c 101.664695: page_cache_ra_unbounded+0x1c4/0x238 101.664701: page_cache_ra_order+0x2c4/0x350 101.664706: do_sync_mmap_readahead+0x27c/0x56c 101.664713: filemap_fault+0x1c0/0xa78 101.664718: handle_mm_fault+0x558/0x20c0 101.664723: do_page_fault+0x20c/0x4b0 101.664730: do_translation_fault+0x38/0x54 101.664736: do_mem_abort+0x58/0x118 101.664742: el0_da+0x48/0x84 101.664748: el0t_64_sync_handler+0x98/0xbc 101.664753: el0t_64_sync+0x1a8/0x1ac 101.664761: page:fffffffe24132000 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x984c80 101.664770: flags: 0x2000000000000000(zone=1|kasantag=0x0) 101.664779: page_type: 0xffffffff() 101.664787: raw: 2000000000000000 dead000000000100 dead000000000122 0000000000000000 101.664796: raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000 101.664802: page dumped because: pagealloc: corrupted page details 101.664809: page_owner info is not present (never set?) 101.667247: Unable to handle kernel paging request at virtual address ffffff891b25a00c 101.667254: Mem abort info: 101.667257: ESR = 0x0000000096000021 101.667261: EC = 0x25: DABT (current EL), IL = 32 bits 101.667265: SET = 0, FnV = 0 101.667268: EA = 0, S1PTW = 0 101.667272: FSC = 0x21: alignment fault 101.667275: Data abort info:
最新发布
03-08
100.757204: CPU: 5 PID: 3009 Comm: system_server Tainted: G S W OE 6.6.56-android15-8-o-g23dba678dba4-debug #1 1400000003000000474e5500f712d2626cc0b702 100.766851: ffffff8908ea15e3: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ 100.776456: Hardware name: Qualcomm Technologies, Inc. Kera MTP,neutron (DT) 100.776458: Call trace: 100.776459: dump_backtrace+0xf0/0x140 100.776466: show_stack+0x18/0x28 100.776468: dump_stack_lvl+0x70/0xa4 100.776475: __kernel_unpoison_pages+0x16c/0x1ac 100.776485: post_alloc_hook+0x184/0x1ac 100.776492: prep_new_page+0x28/0x188 100.776495: get_page_from_freelist+0x1bb8/0x1d54 100.776499: __alloc_pages+0xe8/0x2cc 100.776502: __folio_alloc+0x1c/0x4c 100.776505: vma_alloc_zeroed_movable_folio+0x38/0x4c 100.776512: handle_mm_fault+0xd88/0x20c0 100.776516: do_page_fault+0x20c/0x4b0 100.776525: do_translation_fault+0x38/0x54 100.776528: do_mem_abort+0x58/0x118 100.776532: el0_da+0x48/0x84 100.776537: el0t_64_sync_handler+0x98/0xbc 100.776539: el0t_64_sync+0x1a8/0x1ac 100.776628: page:fffffffe2423a8c0 refcount:1 mapcount:0 mapping:0000000000000000 index:0x1 pfn:0x988ea3 100.786262: ffffff8908ea15f3: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ 100.786266: ffffff8908ea1603: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ 100.786269: ffffff8908ea1613: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ 100.786272: ffffff8908ea1623: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ 100.786274: ffffff8908ea1633: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ 100.786277: ffffff8908ea1643: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ 100.786279: ffffff8908ea1653: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................ 100.786282: ffffff8908ea
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值