From: Andrea Righi <arighi@nvidia.com>
To: Tejun Heo <tj@kernel.org>
Cc: David Vernet <void@manifault.com>,
Changwoo Min <changwoo@igalia.com>,
Emil Tsalapatis <emil@etsalapatis.com>,
David Dai <david.dai@linux.dev>,
Yonghong Song <yonghong.song@linux.dev>,
Alexei Starovoitov <ast@kernel.org>,
bpf@vger.kernel.org, sched-ext@lists.linux.dev,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH sched_ext/for-7.4] sched_ext: Work around pahole 1.32 dropping scx_bpf_task_set_lazy_resched() from BTF
Date: Tue, 29 Sep 2026 21:19:50 +0200 [thread overview]
Message-ID: <arwPVufx2ZUOc_sp@gpd4> (raw)
In-Reply-To: <7c139810be5ffc9764ed4236efc28794@kernel.org>
Hi Tejun,
On Tue, Sep 29, 2026 at 07:32:26AM -1000, Tejun Heo wrote:
> With clang and pahole 1.32, x86-64 vmlinux BTF lacks
> scx_bpf_task_set_lazy_resched() and sched_ext fails to initialize:
>
> sched_ext: Failed to register kfunc sets (-22)
>
> clang describes the lazy argument only after the prologue moves it into a
> callee-saved register, which pahole 1.32 rejects as not being the argument
> register. Released pahole is affected whatever the eventual fix. Keep the
> argument on the stack with barrier_data() so that its location names no
> register. OPTIMIZER_HIDE_VAR() would fix x86-64 but break arm64.
>
> Fixes: f8e5a4e3f3be ("sched_ext: Add lazy preemption support")
> Link: https://lore.kernel.org/r/20260925213619.2187751-1-yonghong.song@linux.dev
> Signed-off-by: Tejun Heo <tj@kernel.org>
> ---
> kernel/sched/ext/ext.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> --- a/kernel/sched/ext/ext.c
> +++ b/kernel/sched/ext/ext.c
> @@ -10136,6 +10136,11 @@ __bpf_kfunc bool scx_bpf_task_set_lazy_r
> {
> struct scx_sched *sch;
>
> + /*
> + * clang's register locations for @lazy make pahole 1.32 drop this kfunc
> + * from BTF. Keep @lazy in memory so its location names no register.
> + */
> + barrier_data(&lazy);
First of all thanks for figuring this out, it was really annoying, I've been
holding pahole to 1.31 because of this.
I also looked a bit and it seems to be triggered specifically by the bool type.
This is with clang 22.1.8 on x86_64 without barrier_data and only changing the
type:
bool movl %esi, %ebp -> dropped by pahole
u32 movl %esi, %ebp -> ok
u64 movq %rsi, %r15 -> ok
With u32 the generated code is identical to the bool case, but clang keeps the
RSI entry range, so pahole is happy.
Should we just change lazy to u32 (or use a u64 flags) instead of using
barrier_data()?
Thanks,
-Andrea
> guard(rcu)();
> sch = scx_prog_sched(aux);
> if (unlikely(!sch || !scx_task_on_sched(sch, p)))
next prev parent reply other threads:[~2026-09-29 19:20 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-29 17:32 Tejun Heo
2026-09-29 19:19 ` Andrea Righi [this message]
2026-09-29 19:25 ` Tejun Heo
2026-09-29 19:37 ` Andrea Righi
2026-09-29 23:11 ` Tejun Heo
2026-09-30 0:59 ` 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=arwPVufx2ZUOc_sp@gpd4 \
--to=arighi@nvidia.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=changwoo@igalia.com \
--cc=david.dai@linux.dev \
--cc=emil@etsalapatis.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sched-ext@lists.linux.dev \
--cc=tj@kernel.org \
--cc=void@manifault.com \
--cc=yonghong.song@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®