From: Breno Leitao <leitao@debian.org>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
leo.bras@arm.com, leo.yan@arm.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, palmer@dabbelt.com,
paulmck@kernel.org, puranjay@kernel.org, usama.arif@linux.dev,
rmikey@meta.com, kernel-team@meta.com
Subject: Re: [PATCH v2] arm64/irqflags: __always_inline the arch_local_irq_*() helpers
Date: Mon, 15 Jun 2026 03:07:58 -0700 [thread overview]
Message-ID: <ai_NFFrMrMabVxED@gmail.com> (raw)
In-Reply-To: <ae9f6_MSCMfgG8VT@J2N7QTR9R3.cambridge.arm.com>
On Mon, Apr 27, 2026 at 02:08:59PM +0100, Mark Rutland wrote:
> On Mon, Apr 27, 2026 at 01:26:18PM +0100, Catalin Marinas wrote:
> > On Tue, Apr 21, 2026 at 08:58:57AM -0700, Breno Leitao wrote:
> > > Force-inline all of the arch_local_irq_*() wrappers so they cannot be
> > > emitted out-of-line:
> > >
> > > - arch_local_irq_enable()
> > > - arch_local_irq_disable()
> > > - arch_local_save_flags()
> > > - arch_irqs_disabled_flags()
> > > - arch_irqs_disabled()
> > > - arch_local_irq_save()
> > > - arch_local_irq_restore()
> >
> > I'll queue this, thanks!
> >
> > I think we should also do local_daif_{mask,restore,inherit} as they seem
> > to be called from noinstr locations in entry-common.c.
>
> I agree we probably should mark those as __always_inline, but I beleive
> they're safe as-is.
Returning to this topic, I've also observed arch_counter_get_cntpct()
appearing in backtraces during lock spinning, which obscures the actual
code location and makes debugging less straightforward.
This scenario is common at Meta when a remote function call targets a
stuck CPU, resulting in an infinite loop, and dying at arch_counter_get_cntpc().
Is it worth making arch_counter_get_cntpc() always inline as well?
[ T18] Sending NMI from CPU 1 to CPUs 18:
[ C18] NMI backtrace for cpu 18
[ C18] CPU: 18 UID: 0 PID: 7467 Comm: dynoKernelMon Kdump: loaded Not tainted 6.16.1-0_fbk3_0_gd6c130b80483 #1 NONE
[ C18] pstate: 63401009 (nZCv daif +PAN -UAO +TCO +DIT +SSBS BTYPE=--)
[ C18] pc : arch_counter_get_cntpct+0x14/0x18
[ C18] lr : ktime_get_mono_fast_ns+0x5c/0x1a8
[ C18] sp : ffff8000d43afa30
[ C18] x29: ffff8000d43afa30 x28: 00000000000f4240 x27: 0000000000000000
[ C18] x26: 0000028ac8fe4369 x25: 0000000000001388 x24: 000000000054fb54
[ C18] x23: ffff800082fbd000 x22: 0000028f22c480dd x21: ffff800081b60000
[ C18] x20: ffff800080c71058 x19: ffff800082fb8848 x18: 0000000000000018
[ C18] x17: 0000000000000058 x16: 00000000ffffffff x15: 00000000ffff0000
[ C18] x14: 0000000000000002 x13: 0000000000000003 x12: 000000000000ffd8
[ C18] x11: ffff8000d43affd8 x10: 0000000000000038 x9 : 0000000000000000
[ C18] x8 : ffff8000d43afa30 x7 : ff7fff7f7f7f7f7f x6 : 000000000000000a
[ C18] x5 : ffff8000832772ba x4 : 0000000000000000 x3 : 0000000000000000
[ C18] x2 : 0000000000000000 x1 : 000000000014b4c0 x0 : 000002a87573b7a0
[ C18] Call trace:
[ C18] arch_counter_get_cntpct+0x14/0x18 (P)
[ C18] smp_call_function_single+0x2d0/0xd90
[ C18] event_function_call+0x80/0x2e0
[ C18] _perf_event_disable+0x5c/0xf0
[ C18] perf_ioctl+0x170/0x890
[ C18] __arm64_sys_ioctl+0xbb0/0xd28
[ C18] invoke_syscall+0x4c/0xd0
[ C18] do_el0_svc+0x80/0xb8
[ C18] el0_svc+0x30/0xf0
[ C18] el0t_64_sync_handler+0x70/0x100
[ C18] el0t_64_sync+0x17c/0x180
Thanks,
--breno
next prev parent reply other threads:[~2026-06-15 10:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-21 15:58 [PATCH v2] arm64/irqflags: __always_inline the arch_local_irq_*() helpers Breno Leitao
2026-04-21 16:07 ` Leonardo Bras
2026-04-23 16:45 ` Breno Leitao
2026-04-27 12:26 ` Catalin Marinas
2026-04-27 13:08 ` Mark Rutland
2026-04-27 14:01 ` [PATCH] arm64/daifflags: Make local_daif_*() helpers __always_inline Leonardo Bras
2026-05-19 10:39 ` Will Deacon
2026-05-19 11:38 ` Leonardo Bras
2026-06-15 10:07 ` Breno Leitao [this message]
2026-04-27 13:44 ` [PATCH v2] arm64/irqflags: __always_inline the arch_local_irq_*() helpers Catalin Marinas
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=ai_NFFrMrMabVxED@gmail.com \
--to=leitao@debian.org \
--cc=catalin.marinas@arm.com \
--cc=kernel-team@meta.com \
--cc=leo.bras@arm.com \
--cc=leo.yan@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=palmer@dabbelt.com \
--cc=paulmck@kernel.org \
--cc=puranjay@kernel.org \
--cc=rmikey@meta.com \
--cc=usama.arif@linux.dev \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.