Netdev List
 help / color / mirror / Atom feed
From: netdev-bot+sashiko@kernel.org
To: bochaolucky@gmail.com
Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org,
	eddyz87@gmail.com, memxor@gmail.com, martin.lau@linux.dev,
	song@kernel.org, yonghong.song@linux.dev, jolsa@kernel.org,
	emil@etsalapatis.com, ihor.solodrai@linux.dev, shuah@kernel.org,
	davem@davemloft.net, kuba@kernel.org, hawk@kernel.org,
	john.fastabend@gmail.com, sdf@fomichev.me, andrew+netdev@lunn.ch,
	edumazet@kernel.org, pabeni@redhat.com, horms@kernel.org,
	linux-kernel@vger.kernel.org, bpf@vger.kernel.org,
	linux-kselftest@vger.kernel.org, netdev@vger.kernel.org,
	alexis.lothore@bootlin.com, lorenzo@kernel.org,
	tiozhang@didiglobal.com, willemdebruijn.kernel@gmail.com,
	petrm@nvidia.com
Subject: Re: [PATCH net-next v6 4/5] selftests/net: Add a shared BPF skeleton rule
Date: Mon, 19 Oct 2026 14:55:10 +0000	[thread overview]
Message-ID: <179242171055.3135.2655547147698612346@kernel.org> (raw)
In-Reply-To: <20261018-xdp-v5-send-20261008-v6-4-7336e1282ca3@gmail.com>

Thank you for your contribution! Sashiko AI review found 2 potential
issue(s) to consider.

Critical: 0 · High: 0 · Medium: 1 · Low: 1

If you believe none of the issues are legitimate, please reply to each
issue of Medium severity or higher and explain why the AI is wrong.
If any of them are legitimate and you plan to respin, please let patchwork
know by including "pw-bot: cr" as a separate line at the end of your reply
(one such reply per series is enough).

- [Medium] Under LLVM=1, the host bpftool bootstrap rule in
  tools/testing/selftests/net/bpf.mk probes one compiler and builds with…
- [Low] The patch makes two changes outside its subject.

--

selftests/net: Add a shared BPF skeleton rule

This commit adds a shared %.skel.h rule to selftests/net/bpf.mk. When
BPFTOOL is not supplied, it also builds a host bootstrap bpftool. The
BPF compiler now takes KHDR_INCLUDES instead of the source-tree
usr/include, and the libbpf sub-make gets an absolute srctree.

> diff --git a/tools/testing/selftests/net/bpf.mk b/tools/testing/selftests/net/bpf.mk
> index a4f6755dd8941..016e32960280a 100644
> --- a/tools/testing/selftests/net/bpf.mk
> +++ b/tools/testing/selftests/net/bpf.mk
> @@ -6,8 +6,8 @@ BUILD_DIR := $(SCRATCH_DIR)/build
>  BPFDIR := $(top_srcdir)/tools/lib/bpf
>  APIDIR := $(top_srcdir)/tools/include/uapi
>  
> +CCINCLUDE += $(KHDR_INCLUDES)
>  CCINCLUDE += -I$(selfdir)/bpf
> -CCINCLUDE += -I$(top_srcdir)/usr/include/
>  CCINCLUDE += -I$(SCRATCH_DIR)/include
>  
>  BPFOBJ := $(BUILD_DIR)/libbpf/libbpf.a
> @@ -46,8 +46,37 @@ $(BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile)		       \
>  	   $(APIDIR)/linux/bpf.h					       \
>  	   | $(BUILD_DIR)/libbpf
>  	$(call msg,MAKE,,$@)
> -	$(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(BUILD_DIR)/libbpf/ \
> +	$(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) srctree=$(abspath $(top_srcdir)) \
> +		    OUTPUT=$(BUILD_DIR)/libbpf/ \
>  		    EXTRA_CFLAGS='-g -O0'				       \
>  		    DESTDIR=$(SCRATCH_DIR) prefix= all install_headers

[Severity: Low]
This isn't a bug, but the patch also changes two existing parts of
bpf.mk. CCINCLUDE now uses $(KHDR_INCLUDES) in place of
-I$(top_srcdir)/usr/include/, and the libbpf sub-make now gets an
absolute srctree.

Both changes fix behaviour that dates back to commit 3f584c211d8c
("selftests: net: extract BPF building logic from the Makefile").

The commit message does describe both changes. Would it be worth moving
them into their own patch, or adding a Fixes: tag, so they can be picked
up separately from the new skeleton rule?

>  
>  EXTRA_CLEAN += $(SCRATCH_DIR)
> +
> +# Build a host bpftool only when a test needs a generated skeleton.
> +HOSTCC ?= gcc
> +HOSTLD ?= ld
> +BPFTOOL_BUILD := $(BUILD_DIR)/bpftool

[ ... ]

> +$(BPFTOOL_BUILD)/bootstrap/bpftool: \
> +	$(wildcard $(top_srcdir)/tools/bpf/bpftool/*.[ch]) \
> +	$(top_srcdir)/tools/bpf/bpftool/Makefile \
> +	$(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile)
> +	$(call msg,MAKE,,$@)
> +	$(Q)mkdir -p $(BPFTOOL_BUILD)
> +	$(Q)$(MAKE) $(submake_extras) -C $(top_srcdir)/tools/bpf/bpftool \
> +		OUTPUT=$(BPFTOOL_BUILD)/ srctree=$(abspath $(top_srcdir)) \
> +		ARCH= CROSS_COMPILE= CC="$(HOSTCC)" LD="$(HOSTLD)" bootstrap

[Severity: Medium]
Can this bootstrap build fail with LLVM=1?

bpf.mk sets HOSTCC to gcc and HOSTLD to ld whatever LLVM=, LLVM_PREFIX
and LLVM_SUFFIX are, and it only hands them to the bpftool sub-make as
CC and LD. HOSTCC itself is never passed or exported, so inside the
sub-make tools/scripts/Makefile.include sets it from LLVM:

  $(call allow-override,HOSTCC,$(LLVM_PREFIX)clang$(LLVM_SUFFIX))
  $(call allow-override,HOSTAR,$(LLVM_PREFIX)llvm-ar$(LLVM_SUFFIX))
  $(call allow-override,HOSTLD,$(LLVM_PREFIX)ld.lld$(LLVM_SUFFIX))

bpftool then compiles the bootstrap objects and the bootstrap libbpf with
that HOSTCC, which is clang:

tools/bpf/bpftool/Makefile:
	$(QUIET_CC)$(HOSTCC) $(HOST_CFLAGS) -c -MMD $< -o $@
	...
		ARCH= CROSS_COMPILE= CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)" \
		CFLAGS="$(LIBBPF_BOOTSTRAP_CFLAGS)" EXTRA_CFLAGS= $@ install_headers

The CC_NO_CLANG probe in Makefile.include, however, runs against $(CC).
That is the gcc forced on the command line, so the probe adds the
GCC-only warning:

  ifeq ($(CC_NO_CLANG), 1)
  EXTRA_WARNINGS += -Wstrict-aliasing=3

bpftool copies EXTRA_WARNINGS into CFLAGS, HOST_CFLAGS and
LIBBPF_BOOTSTRAP_CFLAGS, and tools/lib/bpf/Makefile adds -Werror. Clang
would then stop with:

  error: unknown warning option '-Wstrict-aliasing=3' [-Werror,-Wunknown-warning-option]

Commit 093b75ef5995 ("tools: Suppress request for warning options not
existent in clang") added the CC_NO_CLANG guard to avoid exactly this
error.

On a clang-only host the result is the same, because a missing gcc
leaves CC_NO_CLANG at 1. The libelf-zstd feature probe would also run
with gcc, not with the clang that does the linking.

The following command should hit this once "selftests/net: Move the XDP
feature test to drivers/net/hw" makes xdp_features depend on
xdp_features.skel.h:

  make LLVM=1 -C tools/testing/selftests TARGETS=drivers/net/hw

selftests/bpf and selftests/hid include tools/scripts/Makefile.include,
so their HOSTCC follows LLVM=. Could bpf.mk set its HOSTCC/HOSTLD
defaults the same way, or pass HOSTCC, HOSTLD and HOSTAR to the bpftool
sub-make as well as CC and LD?

[ ... ]

-- 
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20261018-xdp-v5-send-20261008-v6-0-7336e1282ca3%40gmail.com

  reply	other threads:[~2026-10-19 14:55 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-18 14:05 [PATCH net-next v6 0/5] selftests: Fix and migrate the XDP feature test Bochao Cao via B4 Relay
2026-10-18 14:05 ` [PATCH net-next v6 1/5] selftests/bpf: Fix XDP feature test setup and teardown Bochao Cao via B4 Relay
2026-10-19 14:55   ` netdev-bot+sashiko
2026-10-18 14:05 ` [PATCH net-next v6 2/5] selftests/bpf: Track XDP test processes and isolate namespaces Bochao Cao via B4 Relay
2026-10-19 14:55   ` netdev-bot+sashiko
2026-10-18 14:05 ` [PATCH net-next v6 3/5] selftests/bpf: Send XDP feature probes with AF_PACKET Bochao Cao via B4 Relay
2026-10-19 14:55   ` netdev-bot+sashiko
2026-10-18 14:05 ` [PATCH net-next v6 4/5] selftests/net: Add a shared BPF skeleton rule Bochao Cao via B4 Relay
2026-10-19 14:55   ` netdev-bot+sashiko [this message]
2026-10-18 14:05 ` [PATCH net-next v6 5/5] selftests/net: Move the XDP feature test to drivers/net/hw Bochao Cao via B4 Relay
2026-10-19 14:55   ` netdev-bot+sashiko

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=179242171055.3135.2655547147698612346@kernel.org \
    --to=netdev-bot+sashiko@kernel.org \
    --cc=alexis.lothore@bootlin.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bochaolucky@gmail.com \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=eddyz87@gmail.com \
    --cc=edumazet@kernel.org \
    --cc=emil@etsalapatis.com \
    --cc=hawk@kernel.org \
    --cc=horms@kernel.org \
    --cc=ihor.solodrai@linux.dev \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=lorenzo@kernel.org \
    --cc=martin.lau@linux.dev \
    --cc=memxor@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=petrm@nvidia.com \
    --cc=sdf@fomichev.me \
    --cc=shuah@kernel.org \
    --cc=song@kernel.org \
    --cc=tiozhang@didiglobal.com \
    --cc=willemdebruijn.kernel@gmail.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