[report] WARN_ON_ONCE() was triggered with pseudo NMI enabled

Zenghui Yu
2025-03-12T09:42:18Z

Hi,

With pseudo NMI enabled, I can trigger the following splat when running
selftests (e.g., arm64/signal/fake_sigreturn_bad_magic, which will issue
a BRK instruction).

------------[ cut here ]------------
WARNING: CPU: 5 PID: 386876 at ./arch/arm64/include/asm/irqflags.h:34
send_user_sigtrap+0xc8/0xd0
CPU: 5 UID: 0 PID: 386876 Comm: fake_sigreturn_ Kdump: loaded Not
tainted 6.14.0-rc6-00017-g5e35b5d3ce97-dirty
pstate: 204003c9 (nzCv DAIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : send_user_sigtrap+0xc8/0xd0
lr : brk_handler+0x3c/0xbc
sp : ffff8000ade3be00
pmr: 000000f0
x29: ffff8000ade3be00 x28: ffff00209777c600 x27: 0000000000000000
x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000400e30
x23: ffff800082cb8458 x22: ffff800082cb83c8 x21: 00000000f200029a
x20: ffff8000ade3beb0 x19: ffff8000ade3beb0 x18: 0000000000000000
x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000000
x8 : 0000000000000000 x7 : 0000000000000000 x6 : ffff8000827e6638
x5 : 0000000000000000 x4 : ffff8000827e6638 x3 : 0000000060000000
x2 : ffff8000ade3c000 x1 : 0000000000000001 x0 : 00000000000000d0
Call trace:
send_user_sigtrap+0xc8/0xd0 (P)
brk_handler+0x3c/0xbc
do_debug_exception+0x68/0x110
el0_dbg+0x28/0xb8
el0t_64_sync_handler+0x50/0xcc
el0t_64_sync+0x1ac/0x1b0
---[ end trace 0000000000000000 ]---

I use mainline and the kernel is built with defconfig + ARM64_PSEUDO_NMI
+ ARM64_DEBUG_PRIORITY_MASKING.

Thanks,
Zenghui