You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
i find that you get addr from perf record.
and add addr with -1 to get right addr.
i find this could change the addr's kernel symbol.
give /proc/kallsyms:
[root@plat-sh-infra-testing-common-parca001 perfcheck]# cat /proc/kallsyms | head -n 34175 | tail
ffffffff92d83fe0 T tty_unlock_slave
ffffffff92d83fff T __lock_text_end
ffffffff92d84000 t perf_event_nmi_handler
ffffffff92d84000 T __kprobes_text_start
ffffffff92d84050 t perf_ibs_nmi_handler
ffffffff92d840c0 T save_paranoid
ffffffff92d84200 t common_interrupt
ffffffff92d8436a t ret_from_intr
ffffffff92d8437f t exit_intr
ffffffff92d8439d t retint_with_reschedule
the perf script would get ret_from_intr for addr ffffffff92d8436a:
When using frame pointers to unwind the stack, perf captures the return address at each frame.
The return address is the address of the instruction after the call instruction. For stack unwinding we want to get the symbols associated with the call instructions. That's the motivation for subtracting 1 from each frame address.
You can try to disassemble the code. Is there a call to __irqentry_text_start at the end of common_interrupt or is there a call at the start of ret_from_intr?
What method was used for stack unwinding (fp, dwarf, lbr)?
i find that you get addr from perf record.
and add addr with -1 to get right addr.
i find this could change the addr's kernel symbol.
give /proc/kallsyms:
the perf script would get ret_from_intr for addr ffffffff92d8436a:
but with addr--, we would get common_interrupt for addr ffffffff92d8436a.
so with addr--, our result would diff from perf script output.
which is correct?
The text was updated successfully, but these errors were encountered: