[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