[GIT PULL] IRQ stacks and vmap'ed stack for ARM
Ard Biesheuvel
ardb at kernel.org
Wed Dec 8 01:26:11 PST 2021
The following changes since commit fa55b7dcdc43c1aa1ba12bca9d2dd4318c2a0dbf:
Linux 5.16-rc1 (2021-11-14 13:56:52 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-irq-and-vmap-stacks-for-rmk
for you to fetch changes up to cafc0eab168917ec9c0cd47d530a40cd40eb2928:
ARM: v7m: enable support for IRQ stacks (2021-12-06 12:49:17 +0100)
Cc: Russell King <linux at armlinux.org.uk>
Cc: Nicolas Pitre <nico at fluxnic.net>
Cc: Arnd Bergmann <arnd at arndb.de>
Cc: Kees Cook <keescook at chromium.org>
Cc: Keith Packard <keithpac at amazon.com>
Cc: Linus Walleij <linus.walleij at linaro.org>
Cc: Nick Desaulniers <ndesaulniers at google.com>
Cc: Tony Lindgren <tony at atomide.com>
Cc: Marc Zyngier <maz at kernel.org>
Cc: Vladimir Murzin <vladimir.murzin at arm.com>
Cc: Jesse Taube <mr.bossman075 at gmail.com>
----------------------------------------------------------------
ARM: support for IRQ and vmap'ed stacks
This PR covers all the work related to implementing IRQ stacks and
vmap'ed stacks for all 32-bit ARM systems that are currently supported
by the Linux kernel, including RiscPC and Footbridge. It has been
submitted for review in three different waves:
- IRQ stacks support for v7 SMP systems [0],
- vmap'ed stacks support for v7 SMP systems[1],
- extending support for both IRQ stacks and vmap'ed stacks for all
remaining configurations, including v6/v7 SMP multiplatform kernels
and uniprocessor configurations including v7-M [2]
[0] https://lore.kernel.org/linux-arm-kernel/20211115084732.3704393-1-ardb@kernel.org/
[1] https://lore.kernel.org/linux-arm-kernel/20211122092816.2865873-1-ardb@kernel.org/
[2] https://lore.kernel.org/linux-arm-kernel/20211206164659.1495084-1-ardb@kernel.org/
----------------------------------------------------------------
Ard Biesheuvel (27):
ARM: decompressor: disable stack protector
ARM: stackprotector: prefer compiler for TLS based per-task protector
ARM: remove some dead code
ARM: assembler: introduce bl_r macro
ARM: unwind: support unwinding across multiple stacks
ARM: export dump_mem() to other objects
ARM: unwind: dump exception stack from calling frame
ARM: backtrace-clang: avoid crash on bogus frame pointer
ARM: implement IRQ stacks
ARM: call_with_stack: add unwind support
ARM: run softirqs on the per-CPU IRQ stack
ARM: memcpy: use frame pointer as unwind anchor
ARM: memmove: use frame pointer as unwind anchor
ARM: memset: clean up unwind annotations
ARM: unwind: disregard unwind info before stack frame is set up
ARM: switch_to: clean up Thumb2 code path
ARM: entry: rework stack realignment code in svc_entry
ARM: implement support for vmap'ed stacks
ARM: riscpc: drop support for IOMD_IRQREQC/IOMD_IRQREQD IRQ groups
ARM: entry: preserve thread_info pointer in switch_to
ARM: module: implement support for PC-relative group relocations
ARM: assembler: add optimized ldr/str macros to load variables from memory
ARM: percpu: add SMP_ON_UP support
ARM: use TLS register for 'current' on !SMP as well
ARM: smp: defer TPIDRURO update for SMP v6 configurations too
ARM: implement THREAD_INFO_IN_TASK for uniprocessor systems
ARM: v7m: enable support for IRQ stacks
Arnd Bergmann (5):
ARM: riscpc: use GENERIC_IRQ_MULTI_HANDLER
ARM: footbridge: use GENERIC_IRQ_MULTI_HANDLER
ARM: iop32x: offset IRQ numbers by 1
ARM: iop32x: use GENERIC_IRQ_MULTI_HANDLER
ARM: remove old-style irq entry
Vladimir Murzin (1):
irqchip: nvic: Use GENERIC_IRQ_MULTI_HANDLER
arch/arm/Kconfig | 31 ++-
arch/arm/Makefile | 9 +
arch/arm/boot/compressed/Makefile | 6 +-
arch/arm/boot/compressed/misc.c | 7 -
arch/arm/include/asm/assembler.h | 204 ++++++++++++++++----
arch/arm/include/asm/current.h | 37 ++--
arch/arm/include/asm/elf.h | 3 +
arch/arm/include/asm/entry-macro-multi.S | 40 ----
arch/arm/include/asm/hardware/entry-macro-iomd.S | 131 -------------
arch/arm/include/asm/insn.h | 24 +++
arch/arm/include/asm/irq.h | 1 -
arch/arm/include/asm/mach/arch.h | 2 -
arch/arm/include/asm/page.h | 4 +
arch/arm/include/asm/percpu.h | 25 ++-
arch/arm/include/asm/smp.h | 5 -
arch/arm/include/asm/stacktrace.h | 12 ++
arch/arm/include/asm/switch_to.h | 3 +-
arch/arm/include/asm/thread_info.h | 35 +---
arch/arm/include/asm/tls.h | 13 +-
arch/arm/include/asm/v7m.h | 3 +-
arch/arm/kernel/asm-offsets.c | 3 -
arch/arm/kernel/entry-armv.S | 209 +++++++++++++++++----
arch/arm/kernel/entry-common.S | 16 +-
arch/arm/kernel/entry-header.S | 48 ++++-
arch/arm/kernel/entry-v7m.S | 39 ++--
arch/arm/kernel/head-common.S | 4 +-
arch/arm/kernel/irq.c | 61 ++++--
arch/arm/kernel/module.c | 85 +++++++++
arch/arm/kernel/process.c | 7 +-
arch/arm/kernel/setup.c | 8 +-
arch/arm/kernel/sleep.S | 6 +
arch/arm/kernel/smp.c | 16 +-
arch/arm/kernel/traps.c | 107 ++++++++++-
arch/arm/kernel/unwind.c | 50 +++--
arch/arm/kernel/vmlinux.lds.S | 4 +-
arch/arm/lib/backtrace-clang.S | 14 +-
arch/arm/lib/backtrace.S | 8 +
arch/arm/lib/call_with_stack.S | 33 +++-
arch/arm/lib/copy_from_user.S | 13 +-
arch/arm/lib/copy_template.S | 67 +++----
arch/arm/lib/copy_to_user.S | 13 +-
arch/arm/lib/memcpy.S | 13 +-
arch/arm/lib/memmove.S | 60 ++----
arch/arm/lib/memset.S | 7 +-
arch/arm/mach-footbridge/common.c | 87 +++++++++
.../arm/mach-footbridge/include/mach/entry-macro.S | 107 -----------
arch/arm/mach-iop32x/cp6.c | 10 +-
arch/arm/mach-iop32x/include/mach/entry-macro.S | 31 ---
arch/arm/mach-iop32x/include/mach/irqs.h | 2 +-
arch/arm/mach-iop32x/iop3xx.h | 1 +
arch/arm/mach-iop32x/irq.c | 29 ++-
arch/arm/mach-iop32x/irqs.h | 60 +++---
arch/arm/mach-rpc/fiq.S | 5 +-
arch/arm/mach-rpc/include/mach/entry-macro.S | 13 --
arch/arm/mach-rpc/irq.c | 95 ++++++++++
arch/arm/mm/Kconfig | 1 +
drivers/irqchip/Kconfig | 1 +
drivers/irqchip/irq-nvic.c | 22 +--
58 files changed, 1217 insertions(+), 733 deletions(-)
delete mode 100644 arch/arm/include/asm/entry-macro-multi.S
delete mode 100644 arch/arm/include/asm/hardware/entry-macro-iomd.S
delete mode 100644 arch/arm/mach-footbridge/include/mach/entry-macro.S
delete mode 100644 arch/arm/mach-iop32x/include/mach/entry-macro.S
delete mode 100644 arch/arm/mach-rpc/include/mach/entry-macro.S
More information about the linux-arm-kernel
mailing list