UPSTREAM: 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)
committerJeffrey Vander Stoep <jeffv@google.com>
Fri, 16 Sep 2016 21:31:58 +0000 (21:31 +0000)
commit52494a8bb8a274cb31bb241bb92bd2617855f9f8
tree04c155f6f126131a9b8c11f575cc83626313deb0
parentb7547d55d7a578f62053c86f475eabd68282e6aa
UPSTREAM: 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>
Bug: 30369029
Patchset: per-cpu-irq-stack

(cherry picked from commit 132cd887b5c54758d04bf25c52fa48f45e843a30)
Signed-off-by: Jeff Vander Stoep <jeffv@google.com>
Change-Id: I60b29291620a71ab7b6564730299d29f41ceb199
arch/arm64/include/asm/irq.h
arch/arm64/kernel/irq.c
arch/arm64/kernel/stacktrace.c
arch/arm64/kernel/traps.c