Skip to content

arm64: Move overflow sp into SP_EL1 and kernel sp into SP_EL0

Will Deacon linux-arm-kernel lkml 2 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v2 Latest21 patches 43 repliesIn review
  2. v121 patches 8 repliesSuperseded

Patches in v2 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/21arm64: entry: Defer setting of TPIDRRO_EL0 until exit to userspacearch/arm64/kernel/asm-offsets.c arch/arm64/kernel/entry.S arch/arm64/kernel/process.c +1 more+5 -231 reply
2/21arm64: entry: Only check for stack overflow on exceptions from EL1arch/arm64/kernel/entry.S+6 -02 replies
3/21arm64: stackprotector: Temporarily disable per-task stackprotectorarch/arm64/Kconfig+1 -01 reply
4/21arm64: bpf: Add support for generating reads of TPIDRRO_EL0arch/arm64/include/asm/insn.h arch/arm64/net/bpf_jit.h+3 -02 replies
5/21KVM: arm64: Protect TPIDRRO_EL0 across guest entry/exitarch/arm64/include/asm/kvm_asm.h arch/arm64/kernel/asm-offsets.c arch/arm64/kvm/hyp/entry.S +1 more+19 -62 replies
6/21arm64: Store 'current' in TPIDRRO_EL0 instead of SP_EL0arch/arm64/include/asm/assembler.h arch/arm64/include/asm/current.h arch/arm64/kernel/entry.S +4 more+25 -202 replies
7/21selftests/bpf: arm64: Use TPIDRRO_EL0 instead of SP_EL0 for 'current'tools/testing/selftests/bpf/progs/verifier_jit_inline.c+1 -12 replies
8/21scripts/gdb: arm64: Use TPIDRRO_EL0 instead of SP_EL0 for 'current'scripts/gdb/linux/cpus.py+1 -12 replies
9/21arm64: stackprotector: Re-enable per-task stackprotectorarch/arm64/Kconfig arch/arm64/Makefile+2 -32 replies
10/21arm64: percpu: Specialise set_my_cpu_offset() for the primary CPUarch/arm64/include/asm/percpu.h arch/arm64/kernel/smp.c+7 -92 replies
11/21arm64: percpu: Annotate __kern_my_cpu_offset() as '__always_inline'arch/arm64/include/asm/percpu.h+1 -13 replies
12/21KVM: arm64: Preserve handler/thread bit of EL1 mode in __finalise_el2()arch/arm64/include/uapi/asm/ptrace.h arch/arm64/kernel/hyp-stub.S+5 -30 replies
13/21arm64: sdei: Guard most of asm/sdei.h with CONFIG_ARM_SDE_INTERFACEarch/arm64/include/asm/sdei.h+2 -00 replies
14/21arm64: sdei: Support SDEI events from kernel handler and thread modesarch/arm64/kernel/sdei.c+3 -30 replies
15/21arm64: entry: Point SP_EL0 at the overflow stackarch/arm64/kernel/entry.S arch/arm64/kernel/head.S arch/arm64/kernel/smp.c+15 -22 replies
16/21arm64: entry: Implement EL1t exception handlers for overflow stackarch/arm64/kernel/entry-common.c+39 -42 replies
17/21arm64: entry: Use SPSel to switch to overflow stackarch/arm64/kernel/entry.S+21 -482 replies
18/21arm64: entry: Split up kernel_ventry macro into separate helper macrosarch/arm64/kernel/entry.S+19 -102 replies
19/21arm64: entry: The great stack switcherooarch/arm64/include/asm/kvm_asm.h arch/arm64/kernel/entry-common.c arch/arm64/kernel/entry.S +5 more+70 -357 replies
20/21arm64: tracing: Advertise a mode of EL1t in synthetic kernel regsarch/arm64/include/asm/ftrace.h arch/arm64/include/asm/perf_event.h+3 -31 reply
21/21arm64: Rename 'overflow_stack' and OVERFLOW_STACK_SIZEarch/arm64/include/asm/memory.h arch/arm64/include/asm/stacktrace.h arch/arm64/include/asm/stacktrace/nvhe.h +9 more+41 -381 reply

Reviews trailers per patch

15 of 21 patches have a Reviewed-by or Acked-by.

PatchJinjie RuanLinus Walleij
1/21R-b R-b
2/21R-b R-b
3/21R-b
4/21R-b R-b
5/21R-b R-b
6/21R-b
7/21R-b R-b
8/21R-b R-b
9/21R-b R-b
10/21R-b R-b
11/21R-b R-b
12/21
13/21
14/21
15/21R-b
16/21R-b R-b
17/21R-b R-b
18/21R-b R-b
19/21
20/21
21/21

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v2 thread

Cover letter [PATCH v2 00/21] arm64: Move overflow sp into SP_EL1 and kernel sp into SP_EL0

Hi folks,

This is version two of the kernel stack juggling patches I previously posted here:

https://lore.kernel.org/r/[email protected]

Changes since v1 include:
* Fixed suspend/resume paths to handle the stack pointers properly
* Fixed restoration of ptrauth keys on resume
* Added tags

Cheers,

Will

Cc Arnd Bergmann <[email protected]>
Cc Ard Biesheuvel <[email protected]>
Cc Ada Couprie Diaz <[email protected]>
Cc David Hildenbrand <[email protected]>
Cc Catalin Marinas <[email protected]>
Cc Vladimir Murzin <[email protected]>
Cc Mark Rutland <[email protected]>
Cc Mostafa Saleh <[email protected]>
Cc Lorenzo Stoakes <[email protected]>
Cc Oliver Upton <[email protected]>
Cc Linus Walleij <[email protected]>
Cc Marc Zyngier <[email protected]>

--->8

Mostafa Saleh (1):
KVM: arm64: Protect TPIDRRO_EL0 across guest entry/exit

Will Deacon (20):
arm64: entry: Defer setting of TPIDRRO_EL0 until exit to userspace
arm64: entry: Only check for stack overflow on exceptions from EL1
arm64: stackprotector: Temporarily disable per-task stackprotector
arm64: bpf: Add support for generating reads of TPIDRRO_EL0
arm64: Store 'current' in TPIDRRO_EL0 instead of SP_EL0 selftests/bpf: arm64: Use TPIDRRO_EL0 instead of SP_EL0 for 'current' scripts/gdb: arm64: Use TPIDRRO_EL0 instead of SP_EL0 for 'current'
arm64: stackprotector: Re-enable per-task stackprotector
arm64: percpu: Specialise set_my_cpu_offset() for the primary CPU
arm64: percpu: Annotate __kern_my_cpu_offset() as '__always_inline'
KVM: arm64: Preserve handler/thread bit of EL1 mode in

    __finalise_el2()

arm64: sdei: Guard most of asm/sdei.h with CONFIG_ARM_SDE_INTERFACE
arm64: sdei: Support SDEI events from kernel handler and thread modes
arm64: entry: Point SP_EL0 at the overflow stack
arm64: entry: Implement EL1t exception handlers for overflow stack
arm64: entry: Use SPSel to switch to overflow stack
arm64: entry: Split up kernel_ventry macro into separate helper macros
arm64: entry: The great stack switcheroo
arm64: tracing: Advertise a mode of EL1t in synthetic kernel regs
arm64: Rename 'overflow_stack' and OVERFLOW_STACK_SIZE

 arch/arm64/Kconfig                            |   2 +-
 arch/arm64/Makefile                           |   2 +-
 arch/arm64/include/asm/assembler.h            |   2 +-
 arch/arm64/include/asm/current.h              |   6 +-
 arch/arm64/include/asm/ftrace.h               |   4 +-
 arch/arm64/include/asm/insn.h                 |   1 +
 arch/arm64/include/asm/kvm_asm.h              |  26 +++++
 arch/arm64/include/asm/memory.h               |  10 +-
 arch/arm64/include/asm/percpu.h               |  10 +-
 arch/arm64/include/asm/perf_event.h           |   2 +-
 arch/arm64/include/asm/sdei.h                 |   2 +
 arch/arm64/include/asm/stacktrace.h           |   9 +-
 arch/arm64/include/asm/stacktrace/nvhe.h      |   3 +-
 arch/arm64/include/uapi/asm/ptrace.h          |   1 +
 arch/arm64/kernel/asm-offsets.c               |   2 +
 arch/arm64/kernel/entry-common.c              |  51 +++++++--
 arch/arm64/kernel/entry.S                     | 108 +++++++++---------
 arch/arm64/kernel/head.S                      |   8 +-
 arch/arm64/kernel/hyp-stub.S                  |   7 +-
 arch/arm64/kernel/process.c                   |  21 +---
 arch/arm64/kernel/sdei.c                      |   6 +-
 arch/arm64/kernel/sleep.S                     |   3 +-
 arch/arm64/kernel/smp.c                       |  19 ++-
 arch/arm64/kernel/stacktrace.c                |   2 +-
 arch/arm64/kernel/sys_compat.c                |   7 --
 arch/arm64/kernel/traps.c                     |  14 +--
 arch/arm64/kvm/hyp/entry.S                    |  15 ++-
 arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h    |   2 -
 arch/arm64/kvm/hyp/nvhe/host.S                |   2 +-
 arch/arm64/kvm/hyp/nvhe/stacktrace.c          |   4 +-
 arch/arm64/kvm/stacktrace.c                   |   4 +-
 arch/arm64/mm/proc.S                          |  16 ++-
 arch/arm64/net/bpf_jit.h                      |   2 +
 arch/arm64/net/bpf_jit_comp.c                 |   4 +-
 scripts/gdb/linux/cpus.py                     |   2 +-
 .../selftests/bpf/progs/verifier_jit_inline.c |   2 +-
 36 files changed, 230 insertions(+), 151 deletions(-)
Signature · 1 line
2.55.0.1082.g2b9226bbc0-goog