]> git.baikalelectronics.ru Git - kernel.git/commit
ARM: implement IRQ stacks
authorArd Biesheuvel <ardb@kernel.org>
Tue, 5 Oct 2021 07:15:40 +0000 (09:15 +0200)
committerArd Biesheuvel <ardb@kernel.org>
Fri, 3 Dec 2021 14:11:31 +0000 (15:11 +0100)
commitc784fe3307e12c46cfa182af65ef1cb924ffaee9
tree21565f50f64551f10a68d2df793711ac07962c53
parentfd72ef273296d443decb4a3539b06d8a23eb65c1
ARM: implement IRQ stacks

Now that we no longer rely on the stack pointer to access the current
task struct or thread info, we can implement support for IRQ stacks
cleanly as well.

Define a per-CPU IRQ stack and switch to this stack when taking an IRQ,
provided that we were not already using that stack in the interrupted
context. This is never the case for IRQs taken from user space, but ones
taken while running in the kernel could fire while one taken from user
space has not completed yet.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Keith Packard <keithpac@amazon.com>
Acked-by: Nick Desaulniers <ndesaulniers@google.com>
Tested-by: Marc Zyngier <maz@kernel.org>
Tested-by: Vladimir Murzin <vladimir.murzin@arm.com> # ARMv7M
arch/arm/Kconfig
arch/arm/include/asm/assembler.h
arch/arm/kernel/entry-armv.S
arch/arm/kernel/irq.c
arch/arm/kernel/traps.c
arch/arm/lib/backtrace-clang.S
arch/arm/lib/backtrace.S