From: Usama Anjum <usama.anjum@arm.com>
To: Will Deacon <will@kernel.org>,
linux-arm-kernel@lists.infradead.org,
Mark Rutland <mark.rutland@arm.com>
Cc: usama.anjum@arm.com, Vladimir Murzin <vladimir.murzin@arm.com>,
Arnd Bergmann <arnd@arndb.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Linus Walleij <linusw@kernel.org>,
linux-kernel@vger.kernel.org, Mostafa Saleh <smostafa@google.com>,
Marc Zyngier <maz@kernel.org>,
David Hildenbrand <david@kernel.org>,
Lorenzo Stoakes <ljs@kernel.org>,
Oliver Upton <oupton@kernel.org>,
Ard Biesheuvel <ardb@kernel.org>
Subject: Re: [PATCH v2 00/21] arm64: Move overflow sp into SP_EL1 and kernel sp into SP_EL0
Date: Thu, 24 Sep 2026 13:30:43 +0100 [thread overview]
Message-ID: <238205b2-d48e-43d6-9336-ef6587dc1e06@arm.com> (raw)
In-Reply-To: <20260918161407.2300-1-will@kernel.org>
[-- Attachment #1: Type: text/plain, Size: 5130 bytes --]
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 <arnd@arndb.de>
> Cc: Ard Biesheuvel <ardb@kernel.org>
> Cc: Ada Couprie Diaz <ada.coupriediaz@arm.com>
> Cc: David Hildenbrand <david@kernel.org>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Vladimir Murzin <vladimir.murzin@arm.com>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Mostafa Saleh <smostafa@google.com>
> Cc: Lorenzo Stoakes <ljs@kernel.org>
> Cc: Oliver Upton <oupton@kernel.org>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Marc Zyngier <maz@kernel.org>
>
> --->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(-)
>
[-- Attachment #2: will-stack-switch-results.txt --]
[-- Type: text/plain, Size: 60345 bytes --]
Fastpath runs repeatable Linux kernel benchmarks on defined systems under test (SUTs). Read each row as one benchmark metric: the base column is the before mean, the final column is the after result as a percentage change from that baseline; (I) marks a statistically significant improvement, (R) a regression, and an unmarked value no significant change.
Results for SUT Class aws-m7g.metal:
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| Benchmark | Result Class | will-stack-v2-v7.3-rc1-before-m7g-perf (base) | will-stack-v2-v7.3-rc1-after-m7g-perf |
+====================================+==========================================================+===============================================+=======================================+
| perf/futex | hash (ops/sec) | 2633400.13 | (R) -8.21% |
| | lock-pi (ops/sec) | 280.40 | -0.14% |
| | requeue (ms) | 0.028 | -3.67% |
| | wake (ms) | 0.075 | -1.29% |
| | wake-parallel (ms) | 0.0041 | -6.44% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| perf/mem | memset -k 1GB -f default -s 16GB (bytes/sec) | 65813285254.01 | -0.50% |
| | mmap -p 1GB -f demand -s 32GB -l 5 (bytes/sec) | 64096741623.58 | -0.84% |
| | mmap -p 4KB -f demand -s 32GB -l 5 (bytes/sec) | 49942401198.50 | -0.55% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| perf/sched | messaging -l 10000 (sec) | 1.32 | (R) -3.44% |
| | pipe (ops/sec) | 588652.50 | (I) 18.50% |
| | seccomp-notify (ops/sec) | 243222.80 | (R) -7.07% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| perf/syscall | basic (ops/sec) | 5172519.93 | (R) -18.35% |
| | execve (ops/sec) | 2360.57 | -0.59% |
| | fork (ops/sec) | 4148.93 | -0.34% |
| | getpgid (ops/sec) | 5188203.73 | (R) -18.99% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| micromm/fork | fork: p:1, d:10 (seconds) | 0.0078 | 0.49% |
| | fork: p:512, d:10 (seconds) | 0.0056 | -0.36% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| micromm/munmap | munmap: p:1, d:10 (seconds) | 0.061 | -0.93% |
| | munmap: p:512, d:10 (seconds) | 0.0046 | 0.12% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| micromm/vmalloc | fix_align_alloc_test: p:1, h:0, l:500000 (usec) | 636383.00 | 0.69% |
| | fix_size_alloc_test: p:1, h:0, l:500000 (usec) | 373708.00 | 0.65% |
| | fix_size_alloc_test: p:4, h:0, l:500000 (usec) | 468532.83 | (I) 2.10% |
| | fix_size_alloc_test: p:16, h:0, l:500000 (usec) | 869582.17 | -1.21% |
| | fix_size_alloc_test: p:16, h:1, l:500000 (usec) | 813165.50 | -1.12% |
| | fix_size_alloc_test: p:64, h:0, l:100000 (usec) | 499635.33 | -0.50% |
| | fix_size_alloc_test: p:64, h:1, l:100000 (usec) | 465521.67 | -0.16% |
| | fix_size_alloc_test: p:256, h:0, l:100000 (usec) | 1815456.17 | -0.35% |
| | fix_size_alloc_test: p:256, h:1, l:100000 (usec) | 1701639.17 | -0.28% |
| | fix_size_alloc_test: p:512, h:0, l:100000 (usec) | 3557058.33 | -0.22% |
| | fix_size_alloc_test: p:512, h:1, l:100000 (usec) | 2624327.00 | -0.15% |
| | full_fit_alloc_test: p:1, h:0, l:500000 (usec) | 565714.33 | 0.27% |
| | kvfree_rcu_1_arg_vmalloc_test: p:1, h:0, l:500000 (usec) | 369038.17 | 0.27% |
| | kvfree_rcu_2_arg_vmalloc_test: p:1, h:0, l:500000 (usec) | 369115.50 | 0.73% |
| | long_busy_list_alloc_test: p:1, h:0, l:500000 (usec) | 4383806.67 | -0.72% |
| | pcpu_alloc_test: p:1, h:0, l:500000 (usec) | 198536.00 | -0.45% |
| | random_size_align_alloc_test: p:1, h:0, l:500000 (usec) | 744627.00 | -3.57% |
| | random_size_alloc_test: p:1, h:0, l:500000 (usec) | 2294946.00 | -0.83% |
| | vm_map_ram_test: p:1, h:0, l:500000 (usec) | 81581.33 | 0.90% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/hackbench | hackbench-process-pipes-1 (seconds) | 0.15 | (R) -3.36% |
| | hackbench-process-pipes-4 (seconds) | 0.38 | (R) -6.12% |
| | hackbench-process-pipes-7 (seconds) | 0.66 | (R) -5.12% |
| | hackbench-process-pipes-12 (seconds) | 1.10 | (R) -5.53% |
| | hackbench-process-pipes-21 (seconds) | 1.48 | (R) -6.69% |
| | hackbench-process-pipes-30 (seconds) | 1.87 | (R) -7.30% |
| | hackbench-process-pipes-48 (seconds) | 2.57 | (R) -8.22% |
| | hackbench-process-pipes-79 (seconds) | 3.61 | (R) -9.50% |
| | hackbench-process-pipes-110 (seconds) | 4.68 | (R) -9.85% |
| | hackbench-process-pipes-141 (seconds) | 5.78 | (R) -10.04% |
| | hackbench-process-pipes-172 (seconds) | 6.95 | (R) -9.99% |
| | hackbench-process-pipes-203 (seconds) | 8.08 | (R) -10.16% |
| | hackbench-process-pipes-234 (seconds) | 9.29 | (R) -10.12% |
| | hackbench-process-pipes-256 (seconds) | 10.08 | (R) -10.39% |
| | hackbench-process-sockets-1 (seconds) | 0.28 | (R) -2.13% |
| | hackbench-process-sockets-4 (seconds) | 0.63 | (R) -2.77% |
| | hackbench-process-sockets-7 (seconds) | 0.99 | (R) -3.21% |
| | hackbench-process-sockets-12 (seconds) | 1.63 | (R) -2.56% |
| | hackbench-process-sockets-21 (seconds) | 2.82 | -1.97% |
| | hackbench-process-sockets-30 (seconds) | 4.03 | (R) -2.05% |
| | hackbench-process-sockets-48 (seconds) | 6.42 | (R) -2.46% |
| | hackbench-process-sockets-79 (seconds) | 9.89 | (R) -3.43% |
| | hackbench-process-sockets-110 (seconds) | 13.76 | (R) -3.44% |
| | hackbench-process-sockets-141 (seconds) | 17.67 | (R) -3.96% |
| | hackbench-process-sockets-172 (seconds) | 21.88 | (R) -3.75% |
| | hackbench-process-sockets-203 (seconds) | 26.17 | (R) -3.86% |
| | hackbench-process-sockets-234 (seconds) | 30.53 | (R) -3.90% |
| | hackbench-process-sockets-256 (seconds) | 33.63 | (R) -3.95% |
| | hackbench-thread-pipes-1 (seconds) | 0.18 | (R) -4.43% |
| | hackbench-thread-pipes-4 (seconds) | 0.40 | -3.85% |
| | hackbench-thread-pipes-7 (seconds) | 0.69 | (R) -4.23% |
| | hackbench-thread-pipes-12 (seconds) | 1.15 | (R) -4.93% |
| | hackbench-thread-pipes-21 (seconds) | 1.53 | (R) -5.90% |
| | hackbench-thread-pipes-30 (seconds) | 1.95 | (R) -7.12% |
| | hackbench-thread-pipes-48 (seconds) | 2.68 | (R) -8.46% |
| | hackbench-thread-pipes-79 (seconds) | 3.66 | (R) -10.08% |
| | hackbench-thread-pipes-110 (seconds) | 4.81 | (R) -10.04% |
| | hackbench-thread-pipes-141 (seconds) | 5.92 | (R) -10.60% |
| | hackbench-thread-pipes-172 (seconds) | 7.16 | (R) -10.37% |
| | hackbench-thread-pipes-203 (seconds) | 8.38 | (R) -10.33% |
| | hackbench-thread-pipes-234 (seconds) | 9.62 | (R) -10.56% |
| | hackbench-thread-pipes-256 (seconds) | 10.49 | (R) -10.44% |
| | hackbench-thread-sockets-1 (seconds) | 0.30 | -1.74% |
| | hackbench-thread-sockets-4 (seconds) | 0.64 | (R) -3.70% |
| | hackbench-thread-sockets-7 (seconds) | 0.99 | (R) -3.81% |
| | hackbench-thread-sockets-12 (seconds) | 1.59 | (R) -3.91% |
| | hackbench-thread-sockets-21 (seconds) | 2.71 | (R) -4.14% |
| | hackbench-thread-sockets-30 (seconds) | 3.85 | (R) -3.93% |
| | hackbench-thread-sockets-48 (seconds) | 6.12 | (R) -3.65% |
| | hackbench-thread-sockets-79 (seconds) | 9.50 | (R) -3.97% |
| | hackbench-thread-sockets-110 (seconds) | 13.19 | (R) -3.83% |
| | hackbench-thread-sockets-141 (seconds) | 16.99 | (R) -3.56% |
| | hackbench-thread-sockets-172 (seconds) | 21.04 | (R) -3.70% |
| | hackbench-thread-sockets-203 (seconds) | 25.24 | (R) -3.55% |
| | hackbench-thread-sockets-234 (seconds) | 29.48 | (R) -3.35% |
| | hackbench-thread-sockets-256 (seconds) | 32.52 | (R) -3.25% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/kernbench | kernbench-elsp-64 (seconds) | 360.03 | -0.25% |
| | kernbench-syst-64 (seconds) | 1129.20 | -1.07% |
| | kernbench-user-64 (seconds) | 19755.83 | -0.05% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-bad-altstack | stressng-bad-altstack-1 (ops/second) | 9.68 | 0.07% |
| | stressng-bad-altstack-2 (ops/second) | 19.02 | 0.21% |
| | stressng-bad-altstack-4 (ops/second) | 37.40 | -0.01% |
| | stressng-bad-altstack-8 (ops/second) | 55.42 | -0.50% |
| | stressng-bad-altstack-16 (ops/second) | 17466.33 | 1.13% |
| | stressng-bad-altstack-32 (ops/second) | 54185.30 | -0.48% |
| | stressng-bad-altstack-64 (ops/second) | 98314.32 | -0.00% |
| | stressng-bad-altstack-128 (ops/second) | 104605.90 | -1.52% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-class-io-parallel | stressng-aio-64 (ops/second) | 3463.65 | -2.28% |
| | stressng-hdd-64 (ops/second) | 4212.36 | 0.14% |
| | stressng-io-uring-64 (ops/second) | 776.51 | -6.25% |
| | stressng-readahead-64 (ops/second) | 18119014.75 | -3.88% |
| | stressng-revio-64 (ops/second) | 2789119.01 | -4.00% |
| | stressng-seek-64 (ops/second) | 2753470.04 | -12.39% |
| | stressng-sync-file-64 (ops/second) | 27.63 | -7.59% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-context | stressng-context-1 (ops/second) | 2514.25 | (R) -15.70% |
| | stressng-context-2 (ops/second) | 5025.68 | (R) -15.80% |
| | stressng-context-4 (ops/second) | 10055.60 | (R) -15.92% |
| | stressng-context-8 (ops/second) | 20093.56 | (R) -15.86% |
| | stressng-context-16 (ops/second) | 40100.87 | (R) -15.77% |
| | stressng-context-32 (ops/second) | 80155.74 | (R) -15.68% |
| | stressng-context-64 (ops/second) | 160064.84 | (R) -15.61% |
| | stressng-context-128 (ops/second) | 159299.81 | (R) -15.34% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-fork | stressng-fork-1 (ops/second) | 3781.34 | -0.34% |
| | stressng-fork-2 (ops/second) | 7268.31 | 0.24% |
| | stressng-fork-4 (ops/second) | 14267.94 | -1.75% |
| | stressng-fork-8 (ops/second) | 27227.12 | -1.69% |
| | stressng-fork-16 (ops/second) | 49947.85 | -0.92% |
| | stressng-fork-32 (ops/second) | 81903.86 | -2.31% |
| | stressng-fork-64 (ops/second) | 94812.06 | 0.03% |
| | stressng-fork-128 (ops/second) | 93409.14 | -1.74% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-get | stressng-get-1 (ops/second) | 7771.42 | (R) -3.77% |
| | stressng-get-2 (ops/second) | 14923.01 | (R) -4.15% |
| | stressng-get-4 (ops/second) | 28916.93 | (R) -3.08% |
| | stressng-get-8 (ops/second) | 29471.61 | -0.42% |
| | stressng-get-16 (ops/second) | 29430.88 | -0.32% |
| | stressng-get-32 (ops/second) | 29390.56 | -0.36% |
| | stressng-get-64 (ops/second) | 29403.05 | -0.28% |
| | stressng-get-128 (ops/second) | 29397.55 | -0.33% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-getdent | stressng-getdent-1 (ops/second) | 143257.70 | (R) -3.15% |
| | stressng-getdent-2 (ops/second) | 256672.76 | (R) -3.08% |
| | stressng-getdent-4 (ops/second) | 323023.87 | -2.79% |
| | stressng-getdent-8 (ops/second) | 336126.91 | 1.09% |
| | stressng-getdent-16 (ops/second) | 344968.94 | -1.74% |
| | stressng-getdent-32 (ops/second) | 388775.02 | -0.64% |
| | stressng-getdent-64 (ops/second) | 374204.16 | 0.04% |
| | stressng-getdent-128 (ops/second) | 196093.77 | 2.77% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-madvise | stressng-madvise-1 (ops/second) | 37.05 | |
| | stressng-madvise-2 (ops/second) | 74.97 | (R) -12.91% |
| | stressng-madvise-4 (ops/second) | 143.90 | (R) -11.65% |
| | stressng-madvise-8 (ops/second) | 265.46 | (R) -8.69% |
| | stressng-madvise-16 (ops/second) | 319.68 | -1.94% |
| | stressng-madvise-32 (ops/second) | 431.97 | -0.09% |
| | stressng-madvise-64 (ops/second) | 457.43 | 1.49% |
| | stressng-madvise-128 (ops/second) | 519.15 | 3.63% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-mmap | stressng-mmap-1 (ops/second) | 0.73 | -0.91% |
| | stressng-mmap-2 (ops/second) | 2.83 | (R) -2.00% |
| | stressng-mmap-4 (ops/second) | 10.80 | -1.68% |
| | stressng-mmap-8 (ops/second) | 39.26 | -0.90% |
| | stressng-mmap-16 (ops/second) | 115.64 | -0.79% |
| | stressng-mmap-32 (ops/second) | 224.88 | -0.31% |
| | stressng-mmap-64 (ops/second) | 458.60 | -0.81% |
| | stressng-mmap-128 (ops/second) | 928.63 | -0.90% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-vm-splice | stressng-vm-splice-1 (ops/second) | 391522.81 | (R) -6.46% |
| | stressng-vm-splice-2 (ops/second) | 1006787.55 | (R) -7.53% |
| | stressng-vm-splice-4 (ops/second) | 2395582.21 | (R) -9.11% |
| | stressng-vm-splice-8 (ops/second) | 5260118.81 | (R) -9.96% |
| | stressng-vm-splice-16 (ops/second) | 11130004.33 | (R) -10.78% |
| | stressng-vm-splice-32 (ops/second) | 22230580.82 | (R) -10.54% |
| | stressng-vm-splice-64 (ops/second) | 44458735.50 | (R) -10.69% |
| | stressng-vm-splice-128 (ops/second) | 43738226.27 | (R) -10.98% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-wait | stressng-wait-1 (ops/second) | 2998.90 | -2.73% |
| | stressng-wait-2 (ops/second) | 5994.53 | (R) -8.36% |
| | stressng-wait-4 (ops/second) | 11834.43 | (R) -8.48% |
| | stressng-wait-8 (ops/second) | 23711.92 | (R) -7.53% |
| | stressng-wait-16 (ops/second) | 49787.93 | 0.21% |
| | stressng-wait-32 (ops/second) | 92168.93 | (R) -3.67% |
| | stressng-wait-64 (ops/second) | 140977.84 | -0.52% |
| | stressng-wait-128 (ops/second) | 221533.93 | 0.49% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/stressng-zombie | stressng-zombie-1 (ops/second) | 11283.86 | -0.78% |
| | stressng-zombie-2 (ops/second) | 21403.19 | -0.74% |
| | stressng-zombie-4 (ops/second) | 40659.77 | -1.27% |
| | stressng-zombie-8 (ops/second) | 72426.55 | -0.56% |
| | stressng-zombie-16 (ops/second) | 98712.29 | 0.38% |
| | stressng-zombie-32 (ops/second) | 96167.89 | -2.76% |
| | stressng-zombie-64 (ops/second) | 77641.77 | -0.31% |
| | stressng-zombie-128 (ops/second) | 66592.01 | -1.73% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/sysbench-cpu | sysbenchcpu-1 (ops/second) | 835.75 | -0.03% |
| | sysbenchcpu-4 (ops/second) | 3342.56 | -0.02% |
| | sysbenchcpu-7 (ops/second) | 5849.17 | -0.02% |
| | sysbenchcpu-12 (ops/second) | 10026.47 | -0.02% |
| | sysbenchcpu-21 (ops/second) | 17544.40 | -0.02% |
| | sysbenchcpu-30 (ops/second) | 25061.15 | -0.01% |
| | sysbenchcpu-48 (ops/second) | 40092.05 | -0.01% |
| | sysbenchcpu-79 (ops/second) | 53442.39 | 0.00% |
| | sysbenchcpu-110 (ops/second) | 53441.13 | 0.00% |
| | sysbenchcpu-128 (ops/second) | 53438.59 | 0.01% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/sysbench-mutex | sysbenchmutex-1 (usec) | 194.31 | -0.02% |
| | sysbenchmutex-4 (usec) | 200.57 | 0.06% |
| | sysbenchmutex-7 (usec) | 201.56 | 0.23% |
| | sysbenchmutex-12 (usec) | 202.18 | 0.20% |
| | sysbenchmutex-21 (usec) | 202.18 | -0.22% |
| | sysbenchmutex-30 (usec) | 203.09 | -0.31% |
| | sysbenchmutex-48 (usec) | 234.78 | -2.87% |
| | sysbenchmutex-79 (usec) | 359.85 | 0.57% |
| | sysbenchmutex-110 (usec) | 512.77 | 0.06% |
| | sysbenchmutex-128 (usec) | 593.54 | 3.77% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
| mmtests/sysbench-thread | sysbenchthread-1 (usec) | 0.35 | (R) -16.67% |
| | sysbenchthread-4 (usec) | 0.52 | (R) -10.92% |
| | sysbenchthread-7 (usec) | 2.61 | -10.42% |
| | sysbenchthread-12 (usec) | 5.92 | 13.47% |
| | sysbenchthread-21 (usec) | 14.75 | 16.49% |
| | sysbenchthread-30 (usec) | 18.19 | 23.85% |
| | sysbenchthread-48 (usec) | 33.75 | 6.74% |
| | sysbenchthread-79 (usec) | 60.46 | -11.26% |
| | sysbenchthread-110 (usec) | 88.05 | -11.91% |
| | sysbenchthread-128 (usec) | 109.27 | -2.42% |
+------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+
Results for SUT Class cesw-aarch64-ampereone-1s-a192-32x:
+-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+
| Benchmark | Result Class | will-stack-v2-v7.3-rc1-before-ampereone-perf (base) | will-stack-v2-v7.3-rc1-after-ampereone-perf |
+=================+==========================================================+=====================================================+=============================================+
| perf/futex | hash (ops/sec) | 2631145.87 | -8.65% |
| | lock-pi (ops/sec) | 78.97 | -0.46% |
| | requeue (ms) | 0.12 | (R) -2.31% |
| | wake (ms) | 0.29 | -1.93% |
| | wake-parallel (ms) | 0.0026 | 0.64% |
+-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+
| perf/mem | memset -k 1GB -f default -s 16GB (bytes/sec) | 34089991443.74 | -0.26% |
| | mmap -p 1GB -f demand -s 32GB -l 5 (bytes/sec) | 33956264487.33 | -0.65% |
| | mmap -p 4KB -f demand -s 32GB -l 5 (bytes/sec) | 25932063345.48 | -0.18% |
+-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+
| perf/sched | messaging -l 10000 (sec) | 0.98 | -1.76% |
| | pipe (ops/sec) | 314096.00 | 1.49% |
| | seccomp-notify (ops/sec) | 130701.47 | -0.34% |
+-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+
| perf/syscall | basic (ops/sec) | 7365617.00 | (R) -9.34% |
| | execve (ops/sec) | 1580.90 | -0.60% |
| | fork (ops/sec) | 2456.27 | -0.25% |
| | getpgid (ops/sec) | 7676908.73 | (R) -11.71% |
+-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+
| micromm/fork | fork: p:1, d:10 (seconds) | 0.0084 | -0.57% |
| | fork: p:512, d:10 (seconds) | 0.0048 | -0.39% |
+-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+
| micromm/munmap | munmap: p:1, d:10 (seconds) | 0.078 | -2.66% |
| | munmap: p:512, d:10 (seconds) | 0.022 | 0.94% |
+-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+
| micromm/vmalloc | fix_align_alloc_test: p:1, h:0, l:500000 (usec) | 737247.67 | 5.13% |
| | fix_size_alloc_test: p:1, h:0, l:500000 (usec) | 391932.17 | 1.25% |
| | fix_size_alloc_test: p:4, h:0, l:500000 (usec) | 512435.17 | -0.01% |
| | fix_size_alloc_test: p:16, h:0, l:500000 (usec) | 970130.83 | -1.02% |
| | fix_size_alloc_test: p:16, h:1, l:500000 (usec) | 915661.00 | -0.61% |
| | fix_size_alloc_test: p:64, h:0, l:100000 (usec) | 590007.50 | -0.94% |
| | fix_size_alloc_test: p:64, h:1, l:100000 (usec) | 541856.50 | -0.31% |
| | fix_size_alloc_test: p:256, h:0, l:100000 (usec) | 2161700.17 | -0.92% |
| | fix_size_alloc_test: p:256, h:1, l:100000 (usec) | 1980042.17 | -0.52% |
| | fix_size_alloc_test: p:512, h:0, l:100000 (usec) | 4216675.67 | -0.94% |
| | fix_size_alloc_test: p:512, h:1, l:100000 (usec) | 2983924.67 | -1.93% |
| | full_fit_alloc_test: p:1, h:0, l:500000 (usec) | 613119.67 | -0.41% |
| | kvfree_rcu_1_arg_vmalloc_test: p:1, h:0, l:500000 (usec) | 534642.83 | 2.30% |
| | kvfree_rcu_2_arg_vmalloc_test: p:1, h:0, l:500000 (usec) | 516561.67 | -0.69% |
| | long_busy_list_alloc_test: p:1, h:0, l:500000 (usec) | 4973543.83 | -0.79% |
| | pcpu_alloc_test: p:1, h:0, l:500000 (usec) | 484844.83 | 0.75% |
| | random_size_align_alloc_test: p:1, h:0, l:500000 (usec) | 890200.83 | -0.56% |
| | random_size_alloc_test: p:1, h:0, l:500000 (usec) | 2625180.83 | -0.75% |
| | vm_map_ram_test: p:1, h:0, l:500000 (usec) | 107025.00 | 1.39% |
+-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+
Perf variability (AWS m7g.metal)
For interested readers, these tables show the spread, 95% confidence interval, coefficient of variation (cv), and number of measurements for each perf result.
Before (baseline):
+---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
| Benchmark | Result Class | min | ci95min | mean | ci95max | max | cv | count |
+===============+================================================+=========+===========+================+===========+========+========+=========+
| perf/futex | hash (ops/sec) | -0.96% | -0.22% | 2633400.13 | 0.22% | 1.07% | 0.58% | 30 |
| | lock-pi (ops/sec) | -5.49% | -0.39% | 280.40 | 0.39% | 0.21% | 1.05% | 30 |
| | requeue (ms) | -6.82% | -4.12% | 0.028 | 4.12% | 41.02% | 11.03% | 30 |
| | wake (ms) | -13.60% | -2.96% | 0.075 | 2.96% | 11.90% | 7.92% | 30 |
| | wake-parallel (ms) | -19.77% | -5.83% | 0.0041 | 5.83% | 45.87% | 15.62% | 30 |
+---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
| perf/mem | memset -k 1GB -f default -s 16GB (bytes/sec) | -4.20% | -0.46% | 65813285254.01 | 0.46% | 1.22% | 1.24% | 30 |
| | mmap -p 1GB -f demand -s 32GB -l 5 (bytes/sec) | -13.28% | -1.36% | 64096741623.58 | 1.36% | 3.54% | 3.64% | 30 |
| | mmap -p 4KB -f demand -s 32GB -l 5 (bytes/sec) | -11.70% | -1.31% | 49942401198.50 | 1.31% | 2.59% | 3.51% | 30 |
+---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
| perf/sched:76 | messaging -l 10000 (sec) | -0.87% | -0.15% | 1.32 | 0.15% | 0.87% | 0.41% | 30 |
| | pipe (ops/sec) | -22.16% | -8.94% | 588652.50 | 8.94% | 71.10% | 23.95% | 30 |
| | seccomp-notify (ops/sec) | -5.45% | -1.08% | 243222.80 | 1.08% | 4.85% | 2.90% | 30 |
+---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
| perf/syscall | basic (ops/sec) | -0.49% | -0.19% | 5172519.93 | 0.19% | 2.60% | 0.52% | 30 |
| | execve (ops/sec) | -1.42% | -0.28% | 2360.57 | 0.28% | 1.20% | 0.74% | 30 |
| | fork (ops/sec) | -1.85% | -0.37% | 4148.93 | 0.37% | 1.79% | 0.99% | 30 |
| | getpgid (ops/sec) | -0.40% | -0.16% | 5188203.73 | 0.16% | 1.54% | 0.44% | 30 |
+---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
After (patched):
+---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
| Benchmark | Result Class | min | ci95min | mean | ci95max | max | cv | count |
+===============+================================================+=========+===========+================+===========+========+========+=========+
| perf/futex | hash (ops/sec) | -0.86% | -0.17% | 2417106.13 | 0.17% | 0.86% | 0.46% | 30 |
| | lock-pi (ops/sec) | 0.00% | 0.00% | 280.00 | 0.00% | 0.00% | 0.00% | 30 |
| | requeue (ms) | -4.39% | -1.85% | 0.029 | 1.85% | 23.81% | 4.95% | 30 |
| | wake (ms) | -21.73% | -3.39% | 0.076 | 3.39% | 10.19% | 9.07% | 30 |
| | wake-parallel (ms) | -24.94% | -5.29% | 0.0044 | 5.29% | 22.82% | 14.18% | 30 |
+---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
| perf/mem | memset -k 1GB -f default -s 16GB (bytes/sec) | -3.31% | -0.51% | 65483112434.86 | 0.51% | 1.80% | 1.38% | 30 |
| | mmap -p 1GB -f demand -s 32GB -l 5 (bytes/sec) | -4.05% | -1.07% | 63556894478.20 | 1.07% | 4.41% | 2.87% | 30 |
| | mmap -p 4KB -f demand -s 32GB -l 5 (bytes/sec) | -10.72% | -1.06% | 49666606495.00 | 1.06% | 3.00% | 2.85% | 30 |
+---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
| perf/sched:76 | messaging -l 10000 (sec) | -0.71% | -0.14% | 1.37 | 0.14% | 0.82% | 0.38% | 30 |
| | pipe (ops/sec) | -33.91% | -6.59% | 697562.97 | 6.59% | 27.52% | 17.65% | 30 |
| | seccomp-notify (ops/sec) | -5.05% | -0.84% | 226021.30 | 0.84% | 4.15% | 2.24% | 30 |
+---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
| perf/syscall | basic (ops/sec) | -0.48% | -0.15% | 4223503.80 | 0.15% | 1.11% | 0.39% | 30 |
| | execve (ops/sec) | -1.60% | -0.23% | 2346.60 | 0.23% | 1.42% | 0.61% | 30 |
| | fork (ops/sec) | -2.01% | -0.43% | 4134.93 | 0.43% | 2.27% | 1.14% | 30 |
| | getpgid (ops/sec) | -0.92% | -0.10% | 4203192.50 | 0.10% | 0.25% | 0.26% | 30 |
+---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
prev parent reply other threads:[~2026-09-24 12:30 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-18 16:13 Will Deacon
2026-09-18 16:13 ` [PATCH v2 01/21] arm64: entry: Defer setting of TPIDRRO_EL0 until exit to userspace Will Deacon
2026-09-18 16:13 ` [PATCH v2 02/21] arm64: entry: Only check for stack overflow on exceptions from EL1 Will Deacon
2026-09-18 16:13 ` [PATCH v2 03/21] arm64: stackprotector: Temporarily disable per-task stackprotector Will Deacon
2026-09-18 16:13 ` [PATCH v2 04/21] arm64: bpf: Add support for generating reads of TPIDRRO_EL0 Will Deacon
2026-09-18 16:13 ` [PATCH v2 05/21] KVM: arm64: Protect TPIDRRO_EL0 across guest entry/exit Will Deacon
2026-09-18 16:13 ` [PATCH v2 06/21] arm64: Store 'current' in TPIDRRO_EL0 instead of SP_EL0 Will Deacon
2026-09-18 16:13 ` [PATCH v2 07/21] selftests/bpf: arm64: Use TPIDRRO_EL0 instead of SP_EL0 for 'current' Will Deacon
2026-09-18 16:13 ` [PATCH v2 08/21] scripts/gdb: " Will Deacon
2026-09-18 16:13 ` [PATCH v2 09/21] arm64: stackprotector: Re-enable per-task stackprotector Will Deacon
2026-09-18 16:13 ` [PATCH v2 10/21] arm64: percpu: Specialise set_my_cpu_offset() for the primary CPU Will Deacon
2026-09-18 16:13 ` [PATCH v2 11/21] arm64: percpu: Annotate __kern_my_cpu_offset() as '__always_inline' Will Deacon
2026-09-18 16:13 ` [PATCH v2 12/21] KVM: arm64: Preserve handler/thread bit of EL1 mode in __finalise_el2() Will Deacon
2026-09-18 16:13 ` [PATCH v2 13/21] arm64: sdei: Guard most of asm/sdei.h with CONFIG_ARM_SDE_INTERFACE Will Deacon
2026-09-18 16:13 ` [PATCH v2 14/21] arm64: sdei: Support SDEI events from kernel handler and thread modes Will Deacon
2026-09-18 16:13 ` [PATCH v2 15/21] arm64: entry: Point SP_EL0 at the overflow stack Will Deacon
2026-09-21 15:56 ` Catalin Marinas
2026-09-18 16:14 ` [PATCH v2 16/21] arm64: entry: Implement EL1t exception handlers for " Will Deacon
2026-09-18 16:14 ` [PATCH v2 17/21] arm64: entry: Use SPSel to switch to " Will Deacon
2026-09-18 16:14 ` [PATCH v2 18/21] arm64: entry: Split up kernel_ventry macro into separate helper macros Will Deacon
2026-09-18 16:14 ` [PATCH v2 19/21] arm64: entry: The great stack switcheroo Will Deacon
2026-09-19 11:41 ` Bradley Morgan
2026-09-22 13:51 ` Catalin Marinas
2026-09-18 16:14 ` [PATCH v2 20/21] arm64: tracing: Advertise a mode of EL1t in synthetic kernel regs Will Deacon
2026-09-22 14:00 ` Catalin Marinas
2026-09-18 16:14 ` [PATCH v2 21/21] arm64: Rename 'overflow_stack' and OVERFLOW_STACK_SIZE Will Deacon
2026-09-22 14:01 ` Catalin Marinas
2026-09-24 12:30 ` Usama Anjum [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=238205b2-d48e-43d6-9336-ef6587dc1e06@arm.com \
--to=usama.anjum@arm.com \
--cc=ardb@kernel.org \
--cc=arnd@arndb.de \
--cc=catalin.marinas@arm.com \
--cc=david@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ljs@kernel.org \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=oupton@kernel.org \
--cc=smostafa@google.com \
--cc=vladimir.murzin@arm.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®