On 18/09/2026 5:13 pm, Will Deacon wrote: > Hi folks, > > This is version two of the kernel stack juggling patches I previously > posted here: > > https://lore.kernel.org/r/20260907164247.17223-1-will@kernel.org > > Changes since v1 include: > * Fixed suspend/resume paths to handle the stack pointers properly > * Fixed restoration of ptrauth keys on resume > * Added tags I tested this series with Fastpath on two different server-class machines: AWS m7g.metal and AmpereOne. Fastpath marks statistically significant improvements as (I) and regressions as (R). Please see the attached file for detailed results. The statistically significant R and I were counted: - AWS m7g.metal: - perf: 5 R, 1 I - micromm: 0 R, 1 I - mmtests: 84 R, 0 I - AmpereOne: - perf: 3 R, 0 I - micromm: 0 R, 0 I For reference, I've also put the detailed stats for the perf at the bottom of the file to prove that the variance during the testing was low. Thanks, Usama > > Cheers, > > Will > > Cc: Arnd Bergmann > Cc: Ard Biesheuvel > Cc: Ada Couprie Diaz > Cc: David Hildenbrand > Cc: Catalin Marinas > Cc: Vladimir Murzin > Cc: Mark Rutland > Cc: Mostafa Saleh > Cc: Lorenzo Stoakes > Cc: Oliver Upton > Cc: Linus Walleij > Cc: Marc Zyngier > > --->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(-) >