From: sashiko-bot@kernel.org
To: "Ankur Arora" <ankur.a.arora@oracle.com>
Cc: bpf@vger.kernel.org
Subject: Re: [PATCH v12 02/15] arm64: barrier: Support smp_cond_load_relaxed_timeout()
Date: Mon, 08 Jun 2026 08:31:34 +0000 [thread overview]
Message-ID: <20260608083135.6C0C81F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260608080440.127491-3-ankur.a.arora@oracle.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Zero or negative timeout requests incorrectly block in WFE/WFET.
- [Low] The macro `cpu_poll_relax` references `arch_timer_evtstrm_available`, which is not exported, causing link errors for loadable modules.
--
commit aa12eab164f56555b3ffac8b49cd2f96ce88e36c
Author: Ankur Arora <ankur.a.arora@oracle.com>
arm64: barrier: Support smp_cond_load_relaxed_timeout()
This commit supports waiting in smp_cond_load_relaxed_timeout via
__cmpwait_relaxed on ARM64 when the event-stream is enabled.
> diff --git a/arch/arm64/include/asm/barrier.h b/arch/arm64/include/asm/barrier.h
> index 9495c4441a46b..6190e178db51f 100644
> --- a/arch/arm64/include/asm/barrier.h
> +++ b/arch/arm64/include/asm/barrier.h
[ ... ]
> @@ -219,6 +220,26 @@ do { \
> (typeof(*ptr))VAL; \
> })
>
> +/* Re-declared here to avoid include dependency. */
> +extern bool arch_timer_evtstrm_available(void);
> +
> +/*
> + * In the common case, cpu_poll_relax() sits waiting in __cmpwait_relaxed()
> + * for the ptr value to change.
> + *
> + * Since this period is reasonably long, choose SMP_TIMEOUT_POLL_COUNT
> + * to be 1, so smp_cond_load_{relaxed,acquire}_timeout() does a
> + * time-check in each iteration.
> + */
> +#define SMP_TIMEOUT_POLL_COUNT 1
> +
> +#define cpu_poll_relax(ptr, val, timeout_ns) do { \
> + if (arch_timer_evtstrm_available()) \
[Severity: Low]
Will this regression cause undefined symbol errors for loadable modules?
Since smp_cond_load_relaxed_timeout is a generic synchronization API, it will
be expanded in caller modules and rely on cpu_poll_relax.
However, arch_timer_evtstrm_available is currently only exported for KUnit
testing in drivers/clocksource/arm_arch_timer.c:
EXPORT_SYMBOL_IF_KUNIT(arch_timer_evtstrm_available);
Does this need a general EXPORT_SYMBOL to prevent linking failures when used in
standard loadable modules?
> + __cmpwait_relaxed(ptr, val); \
[Severity: High]
Could this inadvertently block when given a zero or negative timeout?
When looking at the generic wrapper in include/asm-generic/barrier.h,
smp_cond_load_relaxed_timeout executes cpu_poll_relax on the first iteration
before evaluating if the timeout has expired:
cpu_poll_relax(__PTR, VAL, (u64)__timeout);
if (++__count < __spin)
continue;
If a caller provides a zero or negative timeout expecting an immediate
non-blocking poll, this falls through to __cmpwait_relaxed.
For negative timeouts, casting to u64 results in a huge unsigned value
(U64_MAX). Might this cause WFET to block indefinitely?
Even if WFET is unsupported, __cmpwait_relaxed uses WFE, which ignores the
timeout and blocks the CPU until the variable changes or an event stream
interrupt occurs. Does this introduce unintended latency for what should be a
zero-latency fast-path failure?
> + else \
> + cpu_relax(); \
> +} while (0)
> +
> #include <asm-generic/barrier.h>
>
> #endif /* __ASSEMBLER__ */
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260608080440.127491-1-ankur.a.arora@oracle.com?part=2
next prev parent reply other threads:[~2026-06-08 8:31 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-08 8:04 [PATCH v12 00/15] barrier: Add smp_cond_load_{relaxed,acquire}_timeout() Ankur Arora
2026-06-08 8:04 ` [PATCH v12 01/15] asm-generic: barrier: Add smp_cond_load_relaxed_timeout() Ankur Arora
2026-06-08 8:25 ` sashiko-bot
2026-06-08 8:53 ` bot+bpf-ci
2026-06-08 8:04 ` [PATCH v12 02/15] arm64: barrier: Support smp_cond_load_relaxed_timeout() Ankur Arora
2026-06-08 8:31 ` sashiko-bot [this message]
2026-06-08 8:53 ` bot+bpf-ci
2026-06-08 8:04 ` [PATCH v12 03/15] arm64/delay: move some constants out to a separate header Ankur Arora
2026-06-08 8:22 ` sashiko-bot
2026-06-08 8:04 ` [PATCH v12 04/15] arm64: support WFET in smp_cond_load_relaxed_timeout() Ankur Arora
2026-06-08 8:27 ` sashiko-bot
2026-06-08 8:04 ` [PATCH v12 05/15] arm64: rqspinlock: Remove private copy of smp_cond_load_acquire_timewait() Ankur Arora
2026-06-08 8:19 ` sashiko-bot
2026-06-08 8:53 ` bot+bpf-ci
2026-06-08 8:04 ` [PATCH v12 06/15] asm-generic: barrier: Add smp_cond_load_acquire_timeout() Ankur Arora
2026-06-08 8:27 ` sashiko-bot
2026-06-08 8:04 ` [PATCH v12 07/15] atomic: Add atomic_cond_read_*_timeout() Ankur Arora
2026-06-08 8:23 ` sashiko-bot
2026-06-08 8:04 ` [PATCH v12 08/15] locking/atomic: scripts: build atomic_long_cond_read_*_timeout() Ankur Arora
2026-06-08 8:04 ` [PATCH v12 09/15] bpf/rqspinlock: switch check_timeout() to a clock interface Ankur Arora
2026-06-08 8:04 ` [PATCH v12 10/15] bpf/rqspinlock: Use smp_cond_load_acquire_timeout() Ankur Arora
2026-06-08 9:04 ` bot+bpf-ci
2026-06-08 8:04 ` [PATCH v12 11/15] sched: add need-resched timed wait interface Ankur Arora
2026-06-08 8:04 ` [PATCH v12 12/15] cpuidle/poll_state: Wait for need-resched via tif_need_resched_relaxed_wait() Ankur Arora
2026-06-08 8:31 ` sashiko-bot
2026-06-08 8:04 ` [PATCH v12 13/15] arm64/delay: enable testing smp_cond_load_relaxed_timeout() Ankur Arora
2026-06-08 8:32 ` sashiko-bot
2026-06-08 8:04 ` [PATCH v12 14/15] barrier: add tests for smp_cond_load_*_timeout() Ankur Arora
2026-06-08 8:04 ` [PATCH v12 15/15] barrier: add clock tests for smp_cond_load_relaxed_timeout() Ankur Arora
2026-06-08 8:34 ` sashiko-bot
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=20260608083135.6C0C81F00893@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=ankur.a.arora@oracle.com \
--cc=bpf@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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.