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)?
|