arm64: Modify stack trace and dump for use with irq_stack
authorAKASHI Takahiro <takahiro.akashi@linaro.org>
Fri, 4 Dec 2015 11:02:26 +0000 (11:02 +0000)
committerAlex Shi <alex.shi@linaro.org>
Wed, 11 May 2016 07:57:00 +0000 (15:57 +0800)
commit2f478c1abcc07611671c5fee4bd10974dde476ab
tree83e89429b087150fe31e985ad1a9e57500956efa
parentc0f49bdceea7d2f0cfe1c6f857e4e1cfa919382a
arm64: Modify stack trace and dump for use with irq_stack

This patch allows unwind_frame() to traverse from interrupt stack to task
stack correctly. It requires data from a dummy stack frame, created
during irq_stack_entry(), added by a later patch.

A similar approach is taken to modify dump_backtrace(), which expects to
find struct pt_regs underneath any call to functions marked __exception.
When on an irq_stack, the struct pt_regs is stored on the old task stack,
the location of which is stored in the dummy stack frame.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
[james.morse: merged two patches, reworked for per_cpu irq_stacks, and
 no alignment guarantees, added irq_stack definitions]
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
(cherry picked from commit 132cd887b5c54758d04bf25c52fa48f45e843a30)
Signed-off-by: Alex Shi <alex.shi@linaro.org>
arch/arm64/include/asm/irq.h
arch/arm64/kernel/irq.c
arch/arm64/kernel/stacktrace.c
arch/arm64/kernel/traps.c