All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Ankur Arora" <ankur.a.arora@oracle.com>
Cc: bpf@vger.kernel.org
Subject: Re: [PATCH v13 13/15] arm64/delay: enable testing smp_cond_load_relaxed_timeout()
Date: Thu, 02 Jul 2026 01:57:28 +0000	[thread overview]
Message-ID: <20260702015728.D353F1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260702013334.140905-14-ankur.a.arora@oracle.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The generic synchronization macros `smp_cond_load_relaxed_timeout()` and `smp_cond_load_acquire_timeout()` (defined in `include/asm-generic/barrier.h`) are standard kernel APIs. On ARM64, these macros expand to use `cpu_poll_relax()`, which evaluates `arch_timer_evtstrm_available()` and calls `__cmpwait_relaxed_timeout()`. The latter then calls `__delay_cycles()`. Any loadable module using these generic timeout-based wait macros inherently requires both `arch_timer_evtstrm_available` and `__delay_cycles` to be exported.

However, these backend symbols are conditionally exported using `EXPORT_SYMBOL_IF_KUNIT`. If a standard non-KUnit loadable module uses these generic APIs while `CONFIG_KUNIT=n`, it will encounter 'undefined symbol' linker errors during modpost. Because these symbols satisfy a generic architecture-independent API exposed as inline macros, they must be exported unconditionally (e.g., via `EXPORT_SYMBOL_GPL`).
--

commit f9d079be600d568480e3e1fb1f712a02babf0680
Author: Ankur Arora <ankur.a.arora@oracle.com>

arm64/delay: enable testing smp_cond_load_relaxed_timeout()

This commit conditionally exports __delay_cycles and
arch_timer_evtstrm_available to KUnit to enable barrier tests to be built as a
module.

> diff --git a/arch/arm64/lib/delay.c b/arch/arm64/lib/delay.c
> index c660a7ea26dd6..dfb102ce30098 100644
> --- a/arch/arm64/lib/delay.c
> +++ b/arch/arm64/lib/delay.c
[ ... ]
> @@ -30,6 +31,7 @@ u64 notrace __delay_cycles(void)
>  	guard(preempt_notrace)();
>  	return __arch_counter_get_cntvct_stable();
>  }
> +EXPORT_SYMBOL_IF_KUNIT(__delay_cycles);

[Severity: Medium]
Will standard loadable modules encounter undefined symbol errors during modpost
if they use the generic timeout-based wait macros when CONFIG_KUNIT=n?

On ARM64, the generic synchronization macros smp_cond_load_relaxed_timeout()
and smp_cond_load_acquire_timeout() expand to use cpu_poll_relax(), which
evaluates arch_timer_evtstrm_available() and calls __cmpwait_relaxed_timeout(),
which in turn calls __delay_cycles().

Should this be exported unconditionally (e.g., via EXPORT_SYMBOL_GPL) so that
normal modules can use this architecture-independent API?

>  
>  void __delay(unsigned long cycles)
> diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
> index 90aeff44a2764..1de63e1a2cd2f 100644
> --- a/drivers/clocksource/arm_arch_timer.c
> +++ b/drivers/clocksource/arm_arch_timer.c
[ ... ]
> @@ -896,6 +897,7 @@ bool arch_timer_evtstrm_available(void)
>  	 */
>  	return cpumask_test_cpu(raw_smp_processor_id(), &evtstrm_available);
>  }
> +EXPORT_SYMBOL_IF_KUNIT(arch_timer_evtstrm_available);

[Severity: Medium]
Could this similarly break standard modules that use the generic API?

As mentioned above, arch_timer_evtstrm_available() is evaluated during the
expansion of the generic smp_cond_load_*_timeout macros. An unconditional
export might be needed here as well to prevent module linking errors.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260702013334.140905-1-ankur.a.arora@oracle.com?part=13

  reply	other threads:[~2026-07-02  1:57 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-02  1:33 [PATCH v13 00/15] barrier: Add smp_cond_load_{relaxed,acquire}_timeout() Ankur Arora
2026-07-02  1:33 ` [PATCH v13 01/15] asm-generic: barrier: Add smp_cond_load_relaxed_timeout() Ankur Arora
2026-07-02  1:46   ` sashiko-bot
2026-07-02  2:11   ` bot+bpf-ci
2026-07-02  1:33 ` [PATCH v13 02/15] arm64: barrier: Support smp_cond_load_relaxed_timeout() Ankur Arora
2026-07-02  1:50   ` sashiko-bot
2026-07-02  1:33 ` [PATCH v13 03/15] arm64/delay: move some constants out to a separate header Ankur Arora
2026-07-02  1:47   ` sashiko-bot
2026-07-02  1:33 ` [PATCH v13 04/15] arm64: support WFET in smp_cond_load_relaxed_timeout() Ankur Arora
2026-07-02  1:52   ` sashiko-bot
2026-07-02  1:33 ` [PATCH v13 05/15] arm64: rqspinlock: Remove private copy of smp_cond_load_acquire_timewait() Ankur Arora
2026-07-02  1:33 ` [PATCH v13 06/15] asm-generic: barrier: Add smp_cond_load_acquire_timeout() Ankur Arora
2026-07-02  1:53   ` sashiko-bot
2026-07-02  1:33 ` [PATCH v13 07/15] atomic: Add atomic_cond_read_*_timeout() Ankur Arora
2026-07-02  1:48   ` sashiko-bot
2026-07-02  1:33 ` [PATCH v13 08/15] locking/atomic: scripts: build atomic_long_cond_read_*_timeout() Ankur Arora
2026-07-02  1:33 ` [PATCH v13 09/15] bpf/rqspinlock: switch check_timeout() to a clock interface Ankur Arora
2026-07-02  1:33 ` [PATCH v13 10/15] bpf/rqspinlock: Use smp_cond_load_acquire_timeout() Ankur Arora
2026-07-02  1:33 ` [PATCH v13 11/15] sched: add need-resched timed wait interface Ankur Arora
2026-07-02  1:33 ` [PATCH v13 12/15] cpuidle/poll_state: Wait for need-resched via tif_need_resched_relaxed_wait() Ankur Arora
2026-07-02  1:33 ` [PATCH v13 13/15] arm64/delay: enable testing smp_cond_load_relaxed_timeout() Ankur Arora
2026-07-02  1:57   ` sashiko-bot [this message]
2026-07-02  1:33 ` [PATCH v13 14/15] barrier: add tests for smp_cond_load_*_timeout() Ankur Arora
2026-07-03 18:16   ` Julian Braha
2026-07-06 19:18     ` Ankur Arora
2026-07-02  1:33 ` [PATCH v13 15/15] barrier: add clock tests for smp_cond_load_relaxed_timeout() Ankur Arora
2026-07-02  2:11   ` bot+bpf-ci

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=20260702015728.D353F1F000E9@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.