• Mao Han's avatar
    csky: Fixup perf callchain unwind · 229a0dde
    Mao Han authored
     [ 5221.974084] Unable to handle kernel paging request at virtual address 0xfffff000, pc: 0x8002c18e
     [ 5221.985929] Oops: 00000000
     [ 5221.989488]
     [ 5221.989488] CURRENT PROCESS:
     [ 5221.989488]
     [ 5221.992877] COMM=callchain_test PID=11962
     [ 5221.995213] TEXT=00008000-000087e0 DATA=00009f1c-0000a018 BSS=0000a018-0000b000
     [ 5221.999037] USER-STACK=7fc18e20  KERNEL-STACK=be204680
     [ 5221.999037]
     [ 5222.003292] PC: 0x8002c18e (perf_callchain_kernel+0x3e/0xd4)
     [ 5222.007957] LR: 0x8002c198 (perf_callchain_kernel+0x48/0xd4)
     [ 5222.074873] Call Trace:
     [ 5222.074873] [<800a248e>] get_perf_callchain+0x20a/0x29c
     [ 5222.074873] [<8009d964>] perf_callchain+0x64/0x80
     [ 5222.074873] [<8009dc1c>] perf_prepare_sample+0x29c/0x4b8
     [ 5222.074873] [<8009de6e>] perf_event_output_forward+0x36/0x98
     [ 5222.074873] [<800497e0>] search_exception_tables+0x20/0x44
     [ 5222.074873] [<8002cbb6>] do_page_fault+0x92/0x378
     [ 5222.074873] [<80098608>] __perf_event_overflow+0x54/0xdc
     [ 5222.074873] [<80098778>] perf_swevent_hrtimer+0xe8/0x164
     [ 5222.074873] [<8002ddd0>] update_mmu_cache+0x0/0xd8
     [ 5222.074873] [<8002c014>] user_backtrace+0x58/0xc4
     [ 5222.074873] [<8002c0b4>] perf_callchain_user+0x34/0xd0
     [ 5222.074873] [<800a2442>] get_perf_callchain+0x1be/0x29c
     [ 5222.074873] [<8009d964>] perf_callchain+0x64/0x80
     [ 5222.074873] [<8009d834>] perf_output_sample+0x78c/0x858
     [ 5222.074873] [<8009dc1c>] perf_prepare_sample+0x29c/0x4b8
     [ 5222.074873] [<8009de94>] perf_event_output_forward+0x5c/0x98
     [ 5222.097846]
     [ 5222.097846] [<800a0300>] perf_event_exit_task+0x58/0x43c
     [ 5222.097846] [<8006c874>] hrtimer_interrupt+0x104/0x2ec
     [ 5222.097846] [<800a0300>] perf_event_exit_task+0x58/0x43c
     [ 5222.097846] [<80437bb6>] dw_apb_clockevent_irq+0x2a/0x4c
     [ 5222.097846] [<8006c770>] hrtimer_interrupt+0x0/0x2ec
     [ 5222.097846] [<8005f2e4>] __handle_irq_event_percpu+0xac/0x19c
     [ 5222.097846] [<80437bb6>] dw_apb_clockevent_irq+0x2a/0x4c
     [ 5222.097846] [<8005f408>] handle_irq_event_percpu+0x34/0x88
     [ 5222.097846] [<8005f480>] handle_irq_event+0x24/0x64
     [ 5222.097846] [<8006218c>] handle_level_irq+0x68/0xdc
     [ 5222.097846] [<8005ec76>] __handle_domain_irq+0x56/0xa8
     [ 5222.097846] [<80450e90>] ck_irq_handler+0xac/0xe4
     [ 5222.097846] [<80029012>] csky_do_IRQ+0x12/0x24
     [ 5222.097846] [<8002a3a0>] csky_irq+0x70/0x80
     [ 5222.097846] [<800ca612>] alloc_set_pte+0xd2/0x238
     [ 5222.097846] [<8002ddd0>] update_mmu_cache+0x0/0xd8
     [ 5222.097846] [<800a0340>] perf_event_exit_task+0x98/0x43c
    
    The original fp check doesn't base on the real kernal stack region.
    Invalid fp address may cause kernel panic.
    Signed-off-by: default avatarMao Han <han_mao@linux.alibaba.com>
    Signed-off-by: default avatarGuo Ren <guoren@linux.alibaba.com>
    229a0dde
perf_callchain.c 3.06 KB