• Kuan-Ying Lee's avatar
    scripts/gdb/page_owner: add page owner support · 2f060190
    Kuan-Ying Lee authored
    This GDB script prints page owner information for user to analyze the
    memory usage or memory corruption issue.
    
    Example output from an aarch64 system:
    
    (gdb) lx-dump-page-owner --pfn 655360
    page_owner tracks the page as allocated
    Page last allocated via order 0, gfp_mask: 0x8, pid: 1, tgid: 1 ("swapper/0\000\000\000\000\000\000"), ts 1295948880 ns, free_ts 1011852016 ns
    PFN: 655360, Flags: 0x3fffc0000000000
       0xffff8000086ab964 <post_alloc_hook+452>:    ldp     x19, x20, [sp, #16]
       0xffff80000862e4e0 <split_map_pages+344>:    cbnz    w22, 0xffff80000862e57c <split_map_pages+500>
       0xffff8000086370c4 <isolate_freepages_range+556>:    mov     x0, x27
       0xffff8000086bc1cc <alloc_contig_range+808>: mov     x24, x0
       0xffff80000877d6d8 <cma_alloc+772>:  mov     w1, w0
       0xffff8000082c8d18 <dma_alloc_from_contiguous+104>:  ldr     x19, [sp, #16]
       0xffff8000082ce0e8 <atomic_pool_expand+208>: mov     x19, x0
       0xffff80000c1e41b4 <__dma_atomic_pool_init+172>:     Cannot access memory at address 0xffff80000c1e41b4
       0xffff80000c1e4298 <dma_atomic_pool_init+92>:        Cannot access memory at address 0xffff80000c1e4298
       0xffff8000080161d4 <do_one_initcall+176>:    mov     w21, w0
       0xffff80000c1c1b50 <kernel_init_freeable+952>:       Cannot access memory at address 0xffff80000c1c1b50
       0xffff80000acf87dc <kernel_init+36>: bl      0xffff8000081ab100 <async_synchronize_full>
       0xffff800008018d00 <ret_from_fork+16>:       mrs     x28, sp_el0
    page last free stack trace:
       0xffff8000086a6e8c <free_unref_page_prepare+796>:    mov     w2, w23
       0xffff8000086aee1c <free_unref_page+96>:     tst     w0, #0xff
       0xffff8000086af3f8 <__free_pages+292>:       ldp     x19, x20, [sp, #16]
       0xffff80000c1f3214 <init_cma_reserved_pageblock+220>:        Cannot access memory at address 0xffff80000c1f3214
       0xffff80000c20363c <cma_init_reserved_areas+1284>:   Cannot access memory at address 0xffff80000c20363c
       0xffff8000080161d4 <do_one_initcall+176>:    mov     w21, w0
       0xffff80000c1c1b50 <kernel_init_freeable+952>:       Cannot access memory at address 0xffff80000c1c1b50
       0xffff80000acf87dc <kernel_init+36>: bl      0xffff8000081ab100 <async_synchronize_full>
       0xffff800008018d00 <ret_from_fork+16>:       mrs     x28, sp_el0
    
    Link: https://lkml.kernel.org/r/20230808083020.22254-7-Kuan-Ying.Lee@mediatek.com
    
    Signed-off-by: default avatarKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
    Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Cc: Chinwen Chang <chinwen.chang@mediatek.com>
    Cc: Matthias Brugger <matthias.bgg@gmail.com>
    Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    2f060190
vmlinux-gdb.py 1.21 KB