arm64: unwind: avoid percpu indirection for irq stack
authorMark Rutland <mark.rutland@arm.com>
Thu, 20 Jul 2017 13:01:01 +0000 (14:01 +0100)
committerMark Rutland <mark.rutland@arm.com>
Tue, 8 Aug 2017 15:28:25 +0000 (16:28 +0100)
commit096683724cb2eb95fea759a2580996df1039fdd0
tree78e44f1a2d401822f5fd45b721efca323fd5415a
parented84b4e9582bdfeffc617589fe17dddfc5fe6672
arm64: unwind: avoid percpu indirection for irq stack

Our IRQ_STACK_PTR() and on_irq_stack() helpers both take a cpu argument,
used to generate a percpu address. In all cases, they are passed
{raw_,}smp_processor_id(), so this parameter is redundant.

Since {raw_,}smp_processor_id() use a percpu variable internally, this
approach means we generate a percpu offset to find the current cpu, then
use this to index an array of percpu offsets, which we then use to find
the current CPU's IRQ stack pointer. Thus, most of the work is
redundant.

Instead, we can consistently use raw_cpu_ptr() to generate the CPU's
irq_stack pointer by simply adding the percpu offset to the irq_stack
address, which is simpler in both respects.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: James Morse <james.morse@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
arch/arm64/include/asm/irq.h
arch/arm64/kernel/ptrace.c
arch/arm64/kernel/stacktrace.c
arch/arm64/kernel/traps.c