From: Ada Couprie Diaz <ada.coupriediaz@arm.com>
To: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: mark.rutland@arm.com, peterz@infradead.org,
catalin.marinas@arm.com, ldv@strace.io, song@kernel.org,
will@kernel.org, kees@kernel.org, thuth@redhat.com,
ryan.roberts@arm.com, anshuman.khandual@arm.com,
kevin.brodsky@arm.com, pengcan@kylinos.cn, broonie@kernel.org,
luto@kernel.org, linux-arm-kernel@lists.infradead.org,
wad@chromium.org, yeoreum.yun@arm.com, oleg@redhat.com,
linux-kernel@vger.kernel.org, james.morse@arm.com,
tglx@kernel.org, liqiang01@kylinos.cn, linusw@kernel.org
Subject: Re: [PATCH v15 00/11] arm64: entry: Convert to Generic Entry
Date: Wed, 17 Jun 2026 17:27:03 +0100 [thread overview]
Message-ID: <ec181396-e398-4ce2-8cb8-10d7bdfeed61@arm.com> (raw)
In-Reply-To: <20260511092103.1974980-1-ruanjinjie@huawei.com>
Hi Jinjie,
On 11/05/2026 10:20, Jinjie Ruan wrote:
> Currently, x86, Riscv, Loongarch use the Generic Entry which makes
> maintainers' work easier and codes more elegant. arm64 has already
> successfully switched to the Generic IRQ Entry in commit
> b3cf07851b6c ("arm64: entry: Switch to generic IRQ entry"), it is
> time to completely convert arm64 to Generic Entry.
>
> [...]
>
> It was tested ok with following test cases on QEMU virt platform:
> - Stress-ng CPU stress test.
> - Hackbench stress test.
> - "sud" selftest testcase.
> - get_set_sud, get_syscall_info, set_syscall_info, peeksiginfo
> in tools/testing/selftests/ptrace.
> - breakpoint_test_arm64 in selftests/breakpoints.
> - syscall-abi and ptrace in tools/testing/selftests/arm64/abi
> - fp-ptrace, sve-ptrace, za-ptrace in selftests/arm64/fp.
> - vdso_test_getrandom in tools/testing/selftests/vDSO
> - Strace tests.
>
> The test QEMU configuration is as follows:
>
> qemu-system-aarch64 \
> -M virt \
> -enable-kvm \
> -cpu host \
> -kernel Image \
> -smp 8 \
> -m 512m \
> -nographic \
> -no-reboot \
> -device virtio-rng-pci \
> -append "root=/dev/vda rw console=ttyAMA0 kgdboc=ttyAMA0,115200 \
> earlycon irqchip.gicv3_pseudo_nmi=1" \
> -drive if=none,file=images/rootfs.ext4,format=raw,id=hd0 \
> -device virtio-blk-device,drive=hd0 \
Thanks for the series and the extensive test coverage !
I did some additional testing on my side with the series rebased
on -rc5, to get the latest fixes from Mark Rutland, focusing on stability
rather than performance, with the following configurations :
- Systems
- M1SDP (4 CPU, 16 GiB RAM, GICv3)
- QEMU/KVM on M1SDP (4 CPU, 4 GiB RAM, GICv3)
- Host running upstream
- Host running this series
- AMD Seattle (4 CPU, 8 GiB RAM, GICv2)
- Kernel configurations (+ debug options[1])
- defconfig
- pseudo-NMI (except on Seattle)
- PREEMPT_RT
- PREEMPT_RT + pseudo-NMI (except on Seattle)
- Tests
- stress-ng
- CPU stress test
- Interrupt stress tests
- Virtual Memory stress tests
- Syscall validation tests
- Hackbench
- pseudo-NMI load tests via perf
- debug exception entry load tests
- memcached stress test via mc-crusher
- The above plus high system load/low available memory
- Suspend test via /sys/power/pm_test
- Hibernate (QEMU only)
All tests were able to complete without major issues !
However, when combining pseudo-NMIs with PREEMPT_RT under heavy pNMI load,
I was able to trigger a new warning compared to upstream :
BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!
Specifically, this was when running `stress-ng --all 100 --class vm -t
300` with
`perf top -a -e 'cycles'` in another shell.
This does not feel like a major issue : from my understanding it only
happens
when running the full suite for some time and with many stressors (I was not
able to reproduce it by running individual tests), and flooding the
system with
pseudo-NMIs.
Given that this only happen with PREEMPT_RT, my guess is that it interacts
with generic entry in a way that can lead to more nesting than before,
leading to an easier exhaustion of the limit on lockdep.
As the system was still able to recover and did not lock up, I think it
can be OK
as-is, or simply bumped a bit ? Happy for more opinions on that.
Otherwise, this is
Tested-by: Ada Couprie Diaz <ada.coupriediaz@arm.com>
As this is an important change, any other testing, especially on real
workloads
as well as on very large systems (which we haven't covered), would be
very welcome !
I will take some time soon to review this latest version, now that I am
able to.
Thanks again,
Kind regards
Ada
[0] BUG dump
BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!
turning off the locking correctness validator.
CPU: 0 UID: 0 PID: 77252 Comm: stress-ng-shm-s Tainted: G W 7.1.0-rc5-pnmi-rt-00011-g856fda168b7e #477 PREEMPT_RT
Tainted: [W]=WARN
Hardware name: ARM LTD Morello System Development Platform, BIOS EDK II Mar 7 2024
Call trace:
show_stack+0x20/0x38 (C)
dump_stack_lvl+0xf8/0x1b8
dump_stack+0x18/0x28
__lock_acquire+0x1a50/0x1f78
lock_acquire+0x260/0x448
_raw_spin_lock+0x50/0x70
rcu_note_context_switch+0x11c/0x608
__schedule+0x100/0x1280
preempt_schedule_irq+0x58/0x158
raw_irqentry_exit_cond_resched+0x4c/0x78
arm64_exit_to_kernel_mode+0xa8/0x158
el1_interrupt+0x58/0xb0
el1h_64_irq_handler+0x18/0x28
el1h_64_irq+0x80/0x88
lock_acquire+0x3b0/0x448 (P)
rt_spin_lock+0x11c/0x218
new_inode+0x38/0x78
__shmem_get_inode+0xa8/0x408
__shmem_file_setup+0x16c/0x1b0
shmem_kernel_file_setup+0x38/0x50
newseg+0x100/0x3d8
ipcget+0x464/0x5f0
__arm64_sys_shmget+0x64/0xa0
invoke_syscall.constprop.0+0x58/0x118
do_el0_svc+0x64/0x3d8
el0_svc+0x54/0x310
el0t_64_sync_handler+0xa0/0xe8
el0t_64_sync+0x1ac/0x1b0
[1] Debug options defconfig :
CONFIG_ARM64_DEBUG_PRIORITY_MASKING=y
CONFIG_PM_DEBUG=y
CONFIG_PM_ADVANCED_DEBUG=y
CONFIG_KPROBES=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_DEBUG_SHIRQ=y
CONFIG_HARDLOCKUP_DETECTOR=y
CONFIG_PROVE_LOCKING=y
CONFIG_DEBUG_ATOMIC_SLEEP=y
CONFIG_DEBUG_IRQFLAGS=y
CONFIG_RCU_EQS_DEBUG=y
CONFIG_FUNCTION_TRACER=y
CONFIG_FPROBE=y
CONFIG_USER_EVENTS=y
prev parent reply other threads:[~2026-06-17 16:27 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-11 9:20 [PATCH v15 00/11] arm64: entry: Convert to Generic Entry Jinjie Ruan
2026-05-11 9:20 ` [PATCH v15 01/11] entry: Fix potential syscall truncation in syscall_trace_enter() Jinjie Ruan
2026-05-27 12:21 ` Linus Walleij
2026-05-11 9:20 ` [PATCH v15 02/11] arm64/ptrace: Refactor syscall_trace_enter/exit() to accept flags parameter Jinjie Ruan
2026-05-11 9:20 ` [PATCH v15 03/11] arm64/ptrace: Use syscall_get_nr() helper for syscall_trace_enter() Jinjie Ruan
2026-05-11 9:20 ` [PATCH v15 04/11] arm64/ptrace: Expand secure_computing() in place Jinjie Ruan
2026-05-11 9:20 ` [PATCH v15 05/11] arm64/ptrace: Use syscall_get_arguments() helper for audit Jinjie Ruan
2026-05-11 9:20 ` [PATCH v15 06/11] arm64: ptrace: Move rseq_syscall() before audit_syscall_exit() Jinjie Ruan
2026-05-11 9:20 ` [PATCH v15 07/11] arm64: syscall: Introduce syscall_exit_to_user_mode_work() Jinjie Ruan
2026-05-11 9:21 ` [PATCH v15 08/11] arm64/ptrace: Define and use _TIF_SYSCALL_EXIT_WORK Jinjie Ruan
2026-05-11 9:21 ` [PATCH v15 09/11] arm64/ptrace: Skip syscall exit reporting for PTRACE_SYSEMU_SINGLESTEP Jinjie Ruan
2026-05-11 9:21 ` [PATCH v15 10/11] arm64: entry: Convert to generic entry Jinjie Ruan
2026-05-11 9:21 ` [PATCH v15 11/11] arm64: Inline el0_svc_common() Jinjie Ruan
2026-06-17 16:27 ` Ada Couprie Diaz [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=ec181396-e398-4ce2-8cb8-10d7bdfeed61@arm.com \
--to=ada.coupriediaz@arm.com \
--cc=anshuman.khandual@arm.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=james.morse@arm.com \
--cc=kees@kernel.org \
--cc=kevin.brodsky@arm.com \
--cc=ldv@strace.io \
--cc=linusw@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liqiang01@kylinos.cn \
--cc=luto@kernel.org \
--cc=mark.rutland@arm.com \
--cc=oleg@redhat.com \
--cc=pengcan@kylinos.cn \
--cc=peterz@infradead.org \
--cc=ruanjinjie@huawei.com \
--cc=ryan.roberts@arm.com \
--cc=song@kernel.org \
--cc=tglx@kernel.org \
--cc=thuth@redhat.com \
--cc=wad@chromium.org \
--cc=will@kernel.org \
--cc=yeoreum.yun@arm.com \
/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