From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CE3483DA7DC for ; Tue, 2 Jun 2026 13:03:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405406; cv=none; b=imdDsEDooiEaS9mQUtKcib6T+Prg6010PVAVpshR2XaZc37ZuvUefJkZI4aDa2OdOQXwI+c3N7ikpI/vIke8Q1cYILzVJJPnlQJA95VsCiqZM6pGgcSFn5jhdeka70YjreL7SKjK5LldzSAM0d+1phbdwJmpXkvPomOi2v1uq4U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405406; c=relaxed/simple; bh=GDZbYvQUamOFYqe+wDRuXBL1KE4AYy5pkKArBFAUAWs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LvwZwoQIjJmtl8vYx1uPR6DOhJjh3m89NOS2ROpJS4skIdqdjzDvyinWEacgSQ3O3XFMutC+J6UG5vrcXvrSYL3lze21Ivh5/ZzKs42WHA7WrXlUE6vinv7GBN37iQxMVTakYqB6j7TUgV7AbeYgqkiAiuKskL6wogGi0OpcK+8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=VvcGyynQ; arc=none smtp.client-ip=209.85.208.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="VvcGyynQ" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-68c3421b009so5819616a12.1 for ; Tue, 02 Jun 2026 06:03:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405403; x=1781010203; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=MZypcCVdQoLHHXNUwPT3EyFR3TdxTd7mb2pLyq2WFR0=; b=VvcGyynQ2HtbsI3DV4lCMhzcq42FWTy3LtGVqZoMbZrSJIGhi/wsoB8wby/L7MPRv+ K3ganoO5F227NgfF68y7nctlqEKvpTbSUSg7CMM3p9OWUTi5XFQpHm4gF1xknwyBaArG UknMjsIF1uH5f/r26Yujs2t+uE7rpc/Gc8pBalQvK+Ln+orqt5RKJFlASPpcq5UdC3lC g4/DI7ZyCeHdN6Epw4w50INMQKidOj90c1WNVWTyxhveJvnkQ5hJjVaN/ypsPkc9ikVW BEt3YExf4xso0rKgGer+xMiJOSnNRd+oQLL1ZtZJENXbo32zhZyr3aGvHkzcif3lgZrc K6gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405403; x=1781010203; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MZypcCVdQoLHHXNUwPT3EyFR3TdxTd7mb2pLyq2WFR0=; b=L/EDM7908R9ZltGwH0kl4cUD8jRcXzT6xqwNUs6V6DAURsPLlkmt5bbSp8ikwCerVT oNFnNOziveUkJ2o+/hiWJf5HAgBMh4sD6vGZe0r2HVcrpiJlHgoNTOOs4IBz99lRHA2k oDlxxFujB4+SEWfwBc5yfGBhHWdGoILgdPbBqDgNGaIFLHSAHhqmyUzzzMOH+1jmJicw eNDjfPKkn3+kLDqwbMk/BKN0kVSBErHvSqAoF0383oPsY13MilTIS7mPn83NVwNMbLtp N78yX0185uzmlwmGjE9r5Wb1mYY3BOCDRNhEn56OYbP+953L4lBumqC5DmRjnhxuesB+ hc3A== X-Forwarded-Encrypted: i=1; AFNElJ/TJKpg+Etmgx7dtdiAwiDELW7wLF5nCWOVeJd3vV7BOIQyCO2HHuSzxVD4B35E3stuEEyxMC/VDUB7wN8=@vger.kernel.org X-Gm-Message-State: AOJu0YwTmT9ynQh/k59hLZZ7Foj+Ku6+kBF6oreGOYxUD7mlsE/DCxBt QFEDaSalGH6ZgGNMwcz/59JNjcmy7IX+oIvWoRFwztjij9ALHKVzR5i6GrDljhlmjn8= X-Gm-Gg: Acq92OFq1g+7V+CRnF1mDKtC73ZZP7r6Pf0nPTYmLXq3oKRuqYbeFZX5j/beS5bzM4q 2GLZ6tsPXQTShDMlnzFrUiGNBGOq/EufuuarboQrKKgKP8YoRF66tl0iedGKP2TJSxIKZRCpBPb j7iFcAkIgVY2KUepGWVG7T205B2wmDPUwma/3Uk1vXWCbPRJGg9CuECjFN1omj5p+hQ1QOPvHk3 MoLpjhBg325nKF1JohYJ3YFRWRsbldb0C7sBl2hfX+vn4n3fCcIjLCxS3G7ICH/GEYTdctJLwU7 8xk2RuGW63M2G8wKtti7H1mxbawCHUJKzvGJEVlL8Vmwgb8nViBp46P94BNQQzUeyDXV5ewC3e+ NroX1o+HKdVZeMMCgc+EquW+TKKlsXzJl7qb4l9TET8RMB0f9RW1onnwL2Q+PDLljwOnpFjkLUC mgKgAtO2YBYWZOwa9LxDX1I3HjXsc+m08O X-Received: by 2002:a17:906:c14d:b0:bee:d554:f33c with SMTP id a640c23a62f3a-beef57fbdebmr208259266b.0.1780405401970; Tue, 02 Jun 2026 06:03:21 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bee8899dd5bsm176361766b.23.2026.06.02.06.03.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:21 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:02:50 -0300 Subject: [PATCH bpf-next RESEND v12 01/11] selftests/bpf: Add BPF_STRICT_BUILD toggle Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-1-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=1573; i=rbm@suse.com; h=from:subject:message-id; bh=GDZbYvQUamOFYqe+wDRuXBL1KE4AYy5pkKArBFAUAWs=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QPZE5O73neptr/nVHQlz6qoj/gAhVpUqQ41Slol1ZYyw3dxCoSxmAPVUrEPlcTP7dTwRAKVf8wo JaX29rXsJVQk= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g Distro kernels often lack BTF types or kernel features required by some BPF selftests, causing the build to abort on the first failure and preventing the remaining tests from running. Add BPF_STRICT_BUILD (default 1) to control build failure tolerance. When set to 0, the PERMISSIVE make variable is assigned a non-empty value that subsequent Makefile rules use to make individual build steps non-fatal. When set to 1 (the default), the build fails on any error, preserving the existing behavior for CI and direct builds. Users can opt in to permissive mode on the command line: make -C tools/testing/selftests \ TARGETS=3Dbpf SKIP_TARGETS=3D BPF_STRICT_BUILD=3D0 Suggested-by: Alan Maguire Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index bc049620c774..75036c1b5c4f 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -44,6 +44,12 @@ SKIP_LLVM ?=3D SKIP_LIBBFD ?=3D SKIP_CRYPTO ?=3D =20 +# When BPF_STRICT_BUILD is 1, any BPF object, skeleton, test object, or +# benchmark compilation failure is fatal. Set to 0 to tolerate failures +# and continue building the remaining tests. +BPF_STRICT_BUILD ?=3D 1 +PERMISSIVE :=3D $(filter 0,$(BPF_STRICT_BUILD)) + ifeq ($(srctree),) srctree :=3D $(patsubst %/,%,$(dir $(CURDIR))) srctree :=3D $(patsubst %/,%,$(dir $(srctree))) --=20 2.54.0 From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B59ED3E2746 for ; Tue, 2 Jun 2026 13:03:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405410; cv=none; b=JE3GUh27WKalS6HI34lSE+eI9VXL5I0zRMT8aETWDVedcz+LXTK96OvEcy3pJ3132pr3YlouIDIf2hGLAf/q+kVXP+IxLwkTe8u7MB5wabF49mR2O+dB4PkJjPvj/oPNuI7xCaL+eD0mdAs/Vx3u6F33B6wQd+8bA01YjFqVqZc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405410; c=relaxed/simple; bh=fbF8nQJXxB1SkRTOtp4VOVdXaJiaAS90dkQH2m8/uwE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c9M7Vm+huIA7nOJRNcqMKYrU51PBF4qE5P5q62OMApwWtEXNESrg4h8hUd7vbjlRibIB8gZs+YCw7TTzq00BIEpRylxOYVJ0FrlTGnaxXKOGI9HT6Zka56sgRbrjah+udZ3cM2Dv4ACTQkVBFiOIbJNCkKrHNaTS0p/rG8rJXQI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=VXsQQh96; arc=none smtp.client-ip=209.85.218.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="VXsQQh96" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-bec449cf976so280796866b.2 for ; Tue, 02 Jun 2026 06:03:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405406; x=1781010206; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=M7sRCyAaG4JtB8cGdq/xLoJjiqdDEq8Sk+qOaCu1wfw=; b=VXsQQh96BWjQ9BTGnoywq0gDgGyeUB5+hijsP9A9QCKngLSl0nBcennCKBbc15MWf+ p30eKfSEKtvmvoB9ZBmL1bq1yAXU2U3peDuN+Q/y8LN963ACo/T1OhvwUICijxJnfBV6 q72H0FE86MhEchklWNS6NT4fi9CR5kuT+NOWrB7VrLjrw/TB+YokIIW92Y947Am0bKiz bsZLOUCa4HTm+R0yRY5A65wikBF74kj64840CNZsnQrpb7r+zt32V3gjMP1fmDwAw/Gq RTQ3bEyMK4O03lM/6n2X436azmLP0fmm5QENFkuf3k4QC4aTyAPDJXSHbWGO9rOpkXp/ O8MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405406; x=1781010206; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=M7sRCyAaG4JtB8cGdq/xLoJjiqdDEq8Sk+qOaCu1wfw=; b=aP56IHjcLKmyQti/9O5+h+x2OpjTe+8BRqm9atsW4bdiRGCUDINPi+AoMxL++pnCjs qdpOY8vCdi7Rz7vSBTt8J96o5+pg9QvhR87qBjvxs9E5ru8JtEfcCwteJXy27ZrFjSGY VVP2vFdaXS+G2ZOsH27lsrxqz+FpD8nGSqWrSG13ZP4GKrIvxLpYoHAuf/aT/hTr32sN rJBQxLaSwuh3F6jAeieihPrCFpCpqvScWV3VVaqRFAAhXuFtnZc+4HbHT3JLqmt/qwb7 QzWtwamRS0FA5mILx/jZ8D2ZwxIWMktdpVWTeHVf+fUL6fAA4Cf6qqkHkbZeEwKDMOhV ZRrg== X-Forwarded-Encrypted: i=1; AFNElJ+9TpS16uprJYoodo+mxhgxXaGNhl+2YwgkYAMKLfvQAWiZOzOcsts8cHzqoRCBuI+pW4oIrMf7zn2Hctc=@vger.kernel.org X-Gm-Message-State: AOJu0YwLoM7VFT2dkQ62jfn7XTIr5FaTiCMn+aJqR257QfOBPVkkz3f6 3URSj3kp90DDqnporaXu7N3q77Q4H+YLxzh6kmT6/IosohfR8UNVyXNHJBNxWKBxOyI= X-Gm-Gg: Acq92OEgdLd/KMkU/re69MtyNvv19MXd2CbszMBniBKLb1hWgMD/vmDhuIAZmfXIgG4 ngg7ySOSG0mkSvclydbtSP3ad4v4afd+MBKS+UfjostAEU5Yf7lGYiMdeKDXCQahS+AQmnyQJGa oZSRq/SXuAfsZRv4nVr+w2vBJC4QxMpAueqrlIBslyQrvYADQAFSzhU3pQwj/MuL2hHihNro1jU HT/w/8nIPQORKQylo4wEfLGpYYZRU5NBCHwXwXlomwJFuui/HoFsyxognP/jveDBqyh2A/Wu5Bp d/aYQbjjId6QLGx+ePC+HOfxN9LxLTsGwS2lxhpJddo5+oG+Zl6Jg+VIoTqJ8BCT31QFJCE8HPV 5Qyi6Wn6TEnqJhph1C0IBXawciUiTuaJw7uaupArSLpUATFoeAaRRCx1euhWukhOvrlWLWzZblw CQOpzaggbdlIPX17iUqb+uAQ== X-Received: by 2002:a17:907:9729:b0:bda:8e57:5639 with SMTP id a640c23a62f3a-beab13c2204mr914425266b.20.1780405406008; Tue, 02 Jun 2026 06:03:26 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-be9d62cbee6sm484486866b.44.2026.06.02.06.03.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:25 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:02:51 -0300 Subject: [PATCH bpf-next RESEND v12 02/11] selftests/bpf: Fix test_kmods KDIR to honor O= and distro kernels Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-2-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=5932; i=rbm@suse.com; h=from:subject:message-id; bh=fbF8nQJXxB1SkRTOtp4VOVdXaJiaAS90dkQH2m8/uwE=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QI5yf7yf2KUrgMKzMpv9PNsaaemkv5a2Vsp6OYxwNHZ/EeuLg672ou+N8NZ/UkldtQNlkR1OTTJ LUmbr3gtU8Q0= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g test_kmods/Makefile always pointed KDIR at the kernel source tree root, ignoring O=3D and KBUILD_OUTPUT. On distro kernels where the source tree has not been built, the Makefile had no fallback and would fail unconditionally. When O=3D or KBUILD_OUTPUT is set and points at a prepared kernel build directory (one containing Module.symvers), pass it through so kbuild can locate the correct build infrastructure (scripts, Kconfig, etc.). Note that the module artifacts themselves still land in the M=3D directory, which is test_kmods/; O=3D only controls where kbuild finds its build infrastructure. Fall back to /lib/modules/$(uname -r)/build when neither an explicit valid build directory nor an in-tree Module.symvers is present. A selftests-only O=3D value (one that does not contain Module.symvers, e.g. a private output directory) is intentionally not treated as a kernel build directory. Without this guard, a user invoking "make -C tools/testing/selftests/bpf O=3D/tmp/out" would have test_kmods try to use /tmp/out as the kernel build dir and fail. The parent bpf/Makefile resolves O=3D and KBUILD_OUTPUT to absolute paths before invoking the test_kmods sub-make. Without this, $(abspath ...) inside test_kmods/Makefile would resolve relative paths against the sub-make's CWD (test_kmods/) rather than the user's invocation directory. When O=3D is passed to kbuild, also pass KBUILD_OUTPUT=3D$(KMOD_O_VALID) explicitly. The parent invocation lifts KBUILD_OUTPUT into MAKEFLAGS as a command-line variable, which would otherwise suppress kbuild's own "KBUILD_OUTPUT :=3D $(O)" assignment and cause it to use the inherited KBUILD_OUTPUT instead of the validated O=3D. Guard both all and clean against a missing KDIR so the step is silently skipped rather than fatal. Make the parent Makefile's cp conditional so it does not abort when modules were not built. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 10 +++++---- tools/testing/selftests/bpf/test_kmods/Makefile | 30 +++++++++++++++++++++= +--- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 75036c1b5c4f..e912526a65dd 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -296,13 +296,15 @@ $(OUTPUT)/sign-file: ../../../../scripts/sign-file.c # subst() turns the rule into a pattern matching rule $(addprefix test_kmods/,$(subst .ko,%ko,$(TEST_KMODS))): $(VMLINUX_BTF) $(= RESOLVE_BTFIDS) $(wildcard test_kmods/Makefile test_kmods/*.[ch]) $(Q)$(RM) test_kmods/*.ko test_kmods/*.mod.o # force re-compilation - $(Q)$(MAKE) $(submake_extras) -C test_kmods \ - RESOLVE_BTFIDS=3D$(RESOLVE_BTFIDS) \ + $(Q)$(MAKE) $(submake_extras) -C test_kmods \ + $(if $(O),O=3D$(abspath $(O))) \ + $(if $(KBUILD_OUTPUT),KBUILD_OUTPUT=3D$(abspath $(KBUILD_OUTPUT)))\ + RESOLVE_BTFIDS=3D$(RESOLVE_BTFIDS) \ EXTRA_CFLAGS=3D'' EXTRA_LDFLAGS=3D'' =20 $(TEST_KMOD_TARGETS): $(addprefix test_kmods/,$(TEST_KMODS)) $(call msg,MOD,,$@) - $(Q)cp test_kmods/$(@F) $@ + $(Q)$(if $(PERMISSIVE),if [ -f test_kmods/$(@F) ]; then )cp test_kmods/$(= @F) $@$(if $(PERMISSIVE),; fi) =20 =20 DEFAULT_BPFTOOL :=3D $(HOST_SCRATCH_DIR)/sbin/bpftool @@ -718,7 +720,7 @@ $(TRUNNER_LIB_OBJS): $(TRUNNER_OUTPUT)/%.o:$(TOOLSDIR)/= lib/%.c $(TRUNNER_BINARY)-extras: $(TRUNNER_EXTRA_FILES) | $(TRUNNER_OUTPUT) ifneq ($2:$(OUTPUT),:$(shell pwd)) $$(call msg,EXT-COPY,$(TRUNNER_BINARY),$(TRUNNER_EXTRA_FILES)) - $(Q)rsync -aq $$^ $(TRUNNER_OUTPUT)/ + $(Q)rsync -aq $(if $(PERMISSIVE),--ignore-missing-args) $$^ $(TRUNNER_OUT= PUT)/ endif =20 # some X.test.o files have runtime dependencies on Y.bpf.o files diff --git a/tools/testing/selftests/bpf/test_kmods/Makefile b/tools/testin= g/selftests/bpf/test_kmods/Makefile index 63c4d3f6a12f..031c7454ce65 100644 --- a/tools/testing/selftests/bpf/test_kmods/Makefile +++ b/tools/testing/selftests/bpf/test_kmods/Makefile @@ -1,5 +1,16 @@ TEST_KMOD_DIR :=3D $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST))= ))) -KDIR ?=3D $(abspath $(TEST_KMOD_DIR)/../../../../..) +SRCTREE_KDIR :=3D $(abspath $(TEST_KMOD_DIR)/../../../../..) +# Honor O=3D/KBUILD_OUTPUT only if they point at a prepared kernel build +# directory (one containing Module.symvers); otherwise treat the value as a +# selftests-only output directory and fall back to in-tree or distro heade= rs. +# The parent bpf/Makefile resolves O=3D/KBUILD_OUTPUT to absolute paths be= fore +# invoking this sub-make so relative paths still anchor to the user's +# invocation directory. +KMOD_O :=3D $(or $(O),$(KBUILD_OUTPUT)) +KMOD_O_VALID :=3D $(if $(KMOD_O),$(if $(wildcard $(KMOD_O)/Module.symvers)= ,$(KMOD_O))) +KDIR ?=3D $(if $(KMOD_O_VALID),$(SRCTREE_KDIR), \ + $(if $(wildcard $(SRCTREE_KDIR)/Module.symvers),$(SRCTREE_KDIR), \ + /lib/modules/$(shell uname -r)/build)) =20 ifeq ($(V),1) Q =3D @@ -14,8 +25,21 @@ $(foreach m,$(MODULES),$(eval obj-m +=3D $(m:.ko=3D.o))) =20 CFLAGS_bpf_testmod.o =3D -I$(src) =20 +# When BPF_STRICT_BUILD !=3D 0, a missing KDIR is fatal (the default). +# When permissive, skip silently. +PERMISSIVE :=3D $(filter 0,$(BPF_STRICT_BUILD)) + all: - $(Q)$(MAKE) -C $(KDIR) M=3D$(TEST_KMOD_DIR) modules +ifeq ($(PERMISSIVE),) + $(Q)$(MAKE) -C $(KDIR) $(if $(KMOD_O_VALID),O=3D$(KMOD_O_VALID) KBUILD_OU= TPUT=3D$(KMOD_O_VALID),KBUILD_OUTPUT=3D) \ + M=3D$(TEST_KMOD_DIR) modules +else ifneq ("$(wildcard $(KDIR))", "") + $(Q)$(MAKE) -C $(KDIR) $(if $(KMOD_O_VALID),O=3D$(KMOD_O_VALID) KBUILD_OU= TPUT=3D$(KMOD_O_VALID),KBUILD_OUTPUT=3D) \ + M=3D$(TEST_KMOD_DIR) modules +endif =20 clean: - $(Q)$(MAKE) -C $(KDIR) M=3D$(TEST_KMOD_DIR) clean +ifneq ("$(wildcard $(KDIR))", "") + $(Q)$(MAKE) -C $(KDIR) $(if $(KMOD_O_VALID),O=3D$(KMOD_O_VALID) KBUILD_OU= TPUT=3D$(KMOD_O_VALID),KBUILD_OUTPUT=3D) \ + M=3D$(TEST_KMOD_DIR) clean +endif --=20 2.54.0 From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 83BA83E3165 for ; Tue, 2 Jun 2026 13:03:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405414; cv=none; b=Xl2Tu6fh0oK2Qy6thGRNqquiXHjmiknnNttn0eCltwBUFK8T74uOEa6M43Ch51/Amorh6MjTnqPNGZ/EEh+xwbrwmHOMDRAzNmgTNZV8TC2fJgYpvDwP4jZKbn8cNR046k293ULe6XK5xBuVbuXrSvTOSzK8WysngVe6Gmg3QM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405414; c=relaxed/simple; bh=Bk2oIl54HlJdM3bPz5CNGluzAGabX8YdBZUkS3QZ28I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lthstFFdNfB5ZUlvUTP9fybh0fZpyUlDC/9ySDLLcAlrXsDTIUY8ULkXcIywd3VKHYpza+ESySWyeRearVkeBWZ43t2VGzNtCc3d9s19SWdkOB1WtgEzyNEiqTGLAKsvesEa0XJoustKZUFWoQFgJ4A0f4adiicva5kBuaWOqIk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=CdDvYhZf; arc=none smtp.client-ip=209.85.208.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="CdDvYhZf" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-68acf0a15b3so8482433a12.1 for ; Tue, 02 Jun 2026 06:03:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405411; x=1781010211; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Gn1tc4a7zC6txbHyHLqMaZuZBEnNAfBIbIUfgWdqcIg=; b=CdDvYhZfq4SwZDqwEwnHMrSee4cVgBS9Sph5zPG8P4sP2Ye0eTLFhMu5zPjoSKonH5 IqFGuRtLzSpnADkfr4cwlyohlnDJHK9P+OmglKQP6GY/KxgMxbMqffyf9FrrsM4VVooR jzAQibWvUaPvNK6GJ0m3lmQRqiKRMBO5kgFVKOx2KZCFoGb9Dal0dbGEF/1/I0ClIuJm hGc1vJUsk9EYPsJKxsVQFUQ01xwnBnh942Q83huUJkHlX2vxIL6hy6XfXqZIvFV4ngzL utKSnL7wY9QDHZE0z0bnmGhm3l5QGV2vQufJpP60gxxcuYD2A3xYvAHSQaRXugPV4xRS XlQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405411; x=1781010211; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Gn1tc4a7zC6txbHyHLqMaZuZBEnNAfBIbIUfgWdqcIg=; b=NR9YcQ21zkMW+pG88q84qPDoe1wFH4VOeoUH0lJ5A8lGykduWdvOr78PFCKoGPHUVs B7YQ/6vYLRXto6lq9uva0qa9SLkbSzZZrTguMIhcX6IesAJXkZ/TGsc2aqgvdJ7vjM1i QmnmCw0fF9c/enwsU5ycb8mi0+WhpvI2o/K5q3taKrXCeRfigtSIHEs8+fcBWd0q4v86 Ubk5IwDfdNXprap2ITG/wnCVDasS2+YxohiXb1Rx3640fxz8Yy9iMFmc9x8HL3RJ4wE0 YKRiljner91CIpE7dvKGsXDCr+6yU5hyjRNbwnmUb3Senet0acZtVh56o/r66KFZkE1A WPHw== X-Forwarded-Encrypted: i=1; AFNElJ8q+Iat/2gPqYa1I8Jp7FyCaGiHDLDdo7KxRmeq1kkK7qdG5UL1gZTRaQr0kWXEMp99gQY3fFPfxKisung=@vger.kernel.org X-Gm-Message-State: AOJu0YwlDTqL8z2qKQRHv0mvvzwP/biBe3ycnlnnywdLlFI2vefplpXH Gdke9ek1ak+IinBQjND8dTVlqXPghLrGQeNpZkysNGMRzJNueQPAHpd2EuKYkoHEtcI= X-Gm-Gg: Acq92OGuMseOSig/ycEy5bHNdilkktbcwfwJI3/O3kpSSMJTu2BL26kDLASF48wJb42 mykGwoEy8GTf4QKeLm65CfSdEW6TAzNQGO5UNWRJH9qYzUOMjbvKoqylRPNNpQqb/VmZEYJAudM csmT/A6M+rta/Cl9Gk2hbXXZp9jJ3RcgcjrBTHsLhEWXiDXvuWVEwN4hDc6iKXtTvr57bLfwGFb AhkZmbibQf7GNUdNeFj1RmS4CnUAGLE4A8UoM5PjSG5YvXyedvflIDeeOO/Tl3ELKdl3rkMOCli IG+utZx6NmeYNBI492pBiPZOgDVCyGDg/WFnTg/RtT66uKhueIR24kQejWpmHU0WeJfojJJRzoQ ejMMvQiKCQ8yGTO0IHblU9TzkrXpECbtqLtBCBbmf8BKrK19ApmPMxfyWxQevUNYOUMXw8ByEir EQ6v1FvPEgkOGduKG1V/TpYg== X-Received: by 2002:a17:907:2665:b0:beb:b53d:4841 with SMTP id a640c23a62f3a-bebb53d4b89mr471312366b.35.1780405410408; Tue, 02 Jun 2026 06:03:30 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bee57e06fb1sm191524766b.13.2026.06.02.06.03.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:29 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:02:52 -0300 Subject: [PATCH bpf-next RESEND v12 03/11] selftests/bpf: Tolerate BPF and skeleton generation failures Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-3-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=9623; i=rbm@suse.com; h=from:subject:message-id; bh=Bk2oIl54HlJdM3bPz5CNGluzAGabX8YdBZUkS3QZ28I=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QHFqauxNdChkbX2T0sjwdpl0RC9xcVYSJe1rLdQhTMxMtdB/pJ6PseFoiHdUVuw7DdyPRWtraeQ 0eEmKpgF7Bw4= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g Some BPF programs cannot be built on distro kernels because required BTF types or features are missing. A single failure currently aborts the selftests/bpf build. Make BPF object and skeleton generation best effort in permissive mode: emit SKIP-BPF or SKIP-SKEL to stderr, remove failed outputs so downstream rules can detect absence, and continue with remaining tests. Apply the same tolerance to linked skeletons (TRUNNER_BPF_SKELS_LINKED), which depend on multiple .bpf.o files and abort the build when any dependency is missing. Note that progress messages (GEN-SKEL, LINK-BPF) are also redirected to stderr as a side effect of rewriting the recipes into single-shell pipelines; the $(call msg,...) macro is a make-recipe construct that cannot be used inside an &&-chained shell command sequence. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 108 +++++++++++++++++++++++--------= ---- 1 file changed, 73 insertions(+), 35 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index e912526a65dd..dc1f4a4a3582 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -485,22 +485,26 @@ $(OUTPUT)/cgroup_getset_retval_hooks.o: cgroup_getset= _retval_hooks.h # $4 - binary name define CLANG_BPF_BUILD_RULE $(call msg,CLNG-BPF,$4,$2) - $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv3 -o $2 + $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv3 -o $2 $(if $(PE= RMISSIVE),|| \ + ($(RM) $2; printf ' %-12s %s\n' 'SKIP-BPF' '$(notdir $2)' 1>&2)) endef # Similar to CLANG_BPF_BUILD_RULE, but with disabled alu32 define CLANG_NOALU32_BPF_BUILD_RULE $(call msg,CLNG-BPF,$4,$2) - $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv2 -o $2 + $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv2 -o $2 $(if $(PE= RMISSIVE),|| \ + ($(RM) $2; printf ' %-12s %s\n' 'SKIP-BPF' '$(notdir $2)' 1>&2)) endef # Similar to CLANG_BPF_BUILD_RULE, but with cpu-v4 define CLANG_CPUV4_BPF_BUILD_RULE $(call msg,CLNG-BPF,$4,$2) - $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv4 -o $2 + $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv4 -o $2 $(if $(PE= RMISSIVE),|| \ + ($(RM) $2; printf ' %-12s %s\n' 'SKIP-BPF' '$(notdir $2)' 1>&2)) endef # Build BPF object using GCC define GCC_BPF_BUILD_RULE $(call msg,GCC-BPF,$4,$2) - $(Q)$(BPF_GCC) $3 -DBPF_NO_PRESERVE_ACCESS_INDEX -Wno-attributes -O2 -c $= 1 -o $2 + $(Q)$(BPF_GCC) $3 -DBPF_NO_PRESERVE_ACCESS_INDEX -Wno-attributes -O2 -c $= 1 -o $2 $(if $(PERMISSIVE),|| \ + ($(RM) $2; printf ' %-12s %s\n' 'SKIP-BPF' '$(notdir $2)' 1>&2)) endef =20 SKEL_BLACKLIST :=3D btf__% test_pinning_invalid.c test_sk_assign.c @@ -607,47 +611,81 @@ $(TRUNNER_BPF_OBJS): $(TRUNNER_OUTPUT)/%.bpf.o: \ $$($$<-$2-CFLAGS),$(TRUNNER_BINARY)) =20 $(TRUNNER_BPF_SKELS): %.skel.h: %.bpf.o $(BPFTOOL) | $(TRUNNER_OUTPUT) - $$(call msg,GEN-SKEL,$(TRUNNER_BINARY),$$@) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.linked1.o) $$< - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked1.o) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.linked3.o) $$(<:.o=3D.linked2.o) - $(Q)diff $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked3.o) - $(Q)$$(BPFTOOL) gen skeleton $$(<:.o=3D.linked3.o) name $$(notdir $$(<:.b= pf.o=3D)) > $$@ - $(Q)$$(BPFTOOL) gen subskeleton $$(<:.o=3D.linked3.o) name $$(notdir $$(<= :.bpf.o=3D)) > $$(@:.skel.h=3D.subskel.h) - $(Q)rm -f $$(<:.o=3D.linked1.o) $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked3.= o) + $(Q)$(if $(PERMISSIVE),if [ ! -f $$< ]; then \ + $$(RM) $$@ $$(@:.skel.h=3D.subskel.h); \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + exit 0; \ + fi;) \ + printf ' %-12s %s\n' 'GEN-SKEL' '[$(TRUNNER_BINARY)] $$(notdir $$@)' 1>&= 2; \ + $$(BPFTOOL) gen object $$(<:.o=3D.linked1.o) $$< && \ + $$(BPFTOOL) gen object $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked1.o) && \ + $$(BPFTOOL) gen object $$(<:.o=3D.linked3.o) $$(<:.o=3D.linked2.o) && \ + diff $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked3.o) && \ + $$(BPFTOOL) gen skeleton $$(<:.o=3D.linked3.o) name $$(notdir $$(<:.bpf.o= =3D)) > $$@ && \ + $$(BPFTOOL) gen subskeleton $$(<:.o=3D.linked3.o) name $$(notdir $$(<:.bp= f.o=3D)) > $$(@:.skel.h=3D.subskel.h) $(if $(PERMISSIVE),|| { \ + $$(RM) $$@ $$(@:.skel.h=3D.subskel.h); \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + }) && \ + rm -f $$(<:.o=3D.linked1.o) $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked3.o) =20 $(TRUNNER_BPF_LSKELS): %.lskel.h: %.bpf.o $(BPFTOOL) | $(TRUNNER_OUTPUT) - $$(call msg,GEN-SKEL,$(TRUNNER_BINARY),$$@) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked1.o) $$< - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked1.o) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked3.o) $$(<:.o=3D.llinked2.o) - $(Q)diff $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) - $(Q)$$(BPFTOOL) gen skeleton -L $$(<:.o=3D.llinked3.o) name $$(notdir $$(= <:.bpf.o=3D_lskel)) > $$@ - $(Q)rm -f $$(<:.o=3D.llinked1.o) $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinke= d3.o) + $(Q)$(if $(PERMISSIVE),if [ ! -f $$< ]; then \ + $$(RM) $$@; \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + exit 0; \ + fi;) \ + printf ' %-12s %s\n' 'GEN-SKEL' '[$(TRUNNER_BINARY)] $$(notdir $$@)' 1>&= 2; \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked1.o) $$< && \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked1.o) && \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked3.o) $$(<:.o=3D.llinked2.o) && \ + diff $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) && \ + $$(BPFTOOL) gen skeleton -L $$(<:.o=3D.llinked3.o) name $$(notdir $$(<:.b= pf.o=3D_lskel)) > $$@ $(if $(PERMISSIVE),|| { \ + $$(RM) $$@; \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + }) && \ + rm -f $$(<:.o=3D.llinked1.o) $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) =20 $(TRUNNER_BPF_LSKELS_SIGNED): %.lskel.h: %.bpf.o $(BPFTOOL) | $(TRUNNER_OU= TPUT) - $$(call msg,GEN-SKEL,$(TRUNNER_BINARY) (signed),$$@) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked1.o) $$< - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked1.o) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked3.o) $$(<:.o=3D.llinked2.o) - $(Q)diff $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) - $(Q)$$(BPFTOOL) gen skeleton $(LSKEL_SIGN) $$(<:.o=3D.llinked3.o) name $$= (notdir $$(<:.bpf.o=3D_lskel)) > $$@ - $(Q)rm -f $$(<:.o=3D.llinked1.o) $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinke= d3.o) + $(Q)$(if $(PERMISSIVE),if [ ! -f $$< ]; then \ + $$(RM) $$@; \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + exit 0; \ + fi;) \ + printf ' %-12s %s\n' 'GEN-SKEL' '[$(TRUNNER_BINARY) (signed)] $$(notdir = $$@)' 1>&2; \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked1.o) $$< && \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked1.o) && \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked3.o) $$(<:.o=3D.llinked2.o) && \ + diff $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) && \ + $$(BPFTOOL) gen skeleton $(LSKEL_SIGN) $$(<:.o=3D.llinked3.o) name $$(not= dir $$(<:.bpf.o=3D_lskel)) > $$@ $(if $(PERMISSIVE),|| { \ + $$(RM) $$@; \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + }) && \ + rm -f $$(<:.o=3D.llinked1.o) $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) =20 $(LINKED_BPF_OBJS): %: $(TRUNNER_OUTPUT)/% =20 # .SECONDEXPANSION here allows to correctly expand %-deps variables as pre= requisites .SECONDEXPANSION: $(TRUNNER_BPF_SKELS_LINKED): $(TRUNNER_OUTPUT)/%: $$$$(%-deps) $(BPFTOOL) = | $(TRUNNER_OUTPUT) - $$(call msg,LINK-BPF,$(TRUNNER_BINARY),$$(@:.skel.h=3D.bpf.o)) - $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=3D.linked1.o) $$(addprefix $(TRUN= NER_OUTPUT)/,$$($$(@F)-deps)) - $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=3D.linked2.o) $$(@:.skel.h=3D.lin= ked1.o) - $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=3D.linked3.o) $$(@:.skel.h=3D.lin= ked2.o) - $(Q)diff $$(@:.skel.h=3D.linked2.o) $$(@:.skel.h=3D.linked3.o) - $$(call msg,GEN-SKEL,$(TRUNNER_BINARY),$$@) - $(Q)$$(BPFTOOL) gen skeleton $$(@:.skel.h=3D.linked3.o) name $$(notdir $$= (@:.skel.h=3D)) > $$@ - $(Q)$$(BPFTOOL) gen subskeleton $$(@:.skel.h=3D.linked3.o) name $$(notdir= $$(@:.skel.h=3D)) > $$(@:.skel.h=3D.subskel.h) - $(Q)rm -f $$(@:.skel.h=3D.linked1.o) $$(@:.skel.h=3D.linked2.o) $$(@:.ske= l.h=3D.linked3.o) + $(Q)$(if $(PERMISSIVE),for f in $$(addprefix $(TRUNNER_OUTPUT)/,$$($$(@F)= -deps)); do \ + if [ ! -f $$$$f ]; then \ + $$(RM) $$@ $$(@:.skel.h=3D.subskel.h); \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + exit 0; \ + fi; \ + done;) \ + printf ' %-12s %s\n' 'LINK-BPF' '[$(TRUNNER_BINARY)] $$(notdir $$(@:.ske= l.h=3D.bpf.o))' 1>&2; \ + $$(BPFTOOL) gen object $$(@:.skel.h=3D.linked1.o) $$(addprefix $(TRUNNER_= OUTPUT)/,$$($$(@F)-deps)) && \ + $$(BPFTOOL) gen object $$(@:.skel.h=3D.linked2.o) $$(@:.skel.h=3D.linked1= .o) && \ + $$(BPFTOOL) gen object $$(@:.skel.h=3D.linked3.o) $$(@:.skel.h=3D.linked2= .o) && \ + diff $$(@:.skel.h=3D.linked2.o) $$(@:.skel.h=3D.linked3.o) && \ + printf ' %-12s %s\n' 'GEN-SKEL' '[$(TRUNNER_BINARY)] $$(notdir $$@)' 1>&= 2 && \ + $$(BPFTOOL) gen skeleton $$(@:.skel.h=3D.linked3.o) name $$(notdir $$(@:.= skel.h=3D)) > $$@ && \ + $$(BPFTOOL) gen subskeleton $$(@:.skel.h=3D.linked3.o) name $$(notdir $$(= @:.skel.h=3D)) > $$(@:.skel.h=3D.subskel.h) $(if $(PERMISSIVE),|| { \ + $$(RM) $$@ $$(@:.skel.h=3D.subskel.h); \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + }) && \ + rm -f $$(@:.skel.h=3D.linked1.o) $$(@:.skel.h=3D.linked2.o) $$(@:.skel.h= =3D.linked3.o) =20 # When the compiler generates a %.d file, only skel basenames (not # full paths) are specified as prerequisites for corresponding %.o --=20 2.54.0 From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 052A03E5572 for ; Tue, 2 Jun 2026 13:03:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405416; cv=none; b=eZFebSsPCUdm9UvQf0IKRYw7GLUvPZF3cs2z33imHm8J1MirBfUmCQ93R25xVkpV+JflqPdz6zCd68PFSLZAvecTNXNwTLLZQ+tT5yYWsYXgu0l0WppwBwyN4QjPdIg6ISAvJfG8++ouhA1jJgi+knTahSkhQMW+IYlNcEZnOoY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405416; c=relaxed/simple; bh=KQMQ4HA7sxO7BUSzHCnxywkdpfJKSWuXs/B8rKOPhnI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GeKe5UmRBQUheyx1D+cAfYRQVtbKhUqfEYcL9B4pEjiz0V+u3e21Y+TTb64VdcF1+LxeqYmvwsRPcUReFEO5+KU62rYKqi9O5mTniouHt1IwAPxxoTyZKwygdPHuFoHX+2BT/Inv1K5PIfB7XDpA3uCxKNMxnkrvAvYkLStOBTQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=AXVkIjBZ; arc=none smtp.client-ip=209.85.218.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="AXVkIjBZ" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-bed4f2f0898so296168166b.3 for ; Tue, 02 Jun 2026 06:03:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405413; x=1781010213; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=22zLe9Ow+Y8QfsqqgbxzwNbQJ3fAGWrDqmjGgu/Chr0=; b=AXVkIjBZ5v5az/YMBVUEIhPMcFzIPK2yagxYDB1i6ls/Yxot+pcb7VtpLuMHC03n06 uFV9Y3jCWlbvXhlMtSlY8iNB1873DOAAgpZTlkly1qo8SH9UlKMxzep//Gxw3k88DjXY 2x1S3/Ke6bWH2iebx5Jx0WBcuREDcydbv1XbgISRCkAY6D3STG4TQBWHJjnL8+PCTc0c qJPZJfD3yW6OuW8TAGXXssbvCWTIQlwczYLkSOrtyI3YXn4zzubW13Ta47AGT1OgrJKI HspC2wx2KbgyOvcyaxr/ShJ2/uf8KUxCiPV84rcaA7SNa1ja1x6Gplv4uwyJcSLVJpz6 4cOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405413; x=1781010213; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=22zLe9Ow+Y8QfsqqgbxzwNbQJ3fAGWrDqmjGgu/Chr0=; b=WtO602Ojooglk0vTe7ol0uKf6OjBRAdcLbOf9V8XK3gjmF/KAaRj8uk3IgxOLn04Z4 7JbZoLHEsa4MOjh7iNwnE1bB9kBaooIpnCXkROBafeaDXdVilujTGBvDxl7j/uHESGrZ XipXtKYkok9lJRduSlW+4bDHMmLwzFLUHg4KUmmeuaZ4cRgbfv/Abt+oRXUFMuORmfWS ow1/c18fB/n2kdiYvsFxrldFIzx90IG6sf3VNbEAeqcmMqf8olLk3+HG6X/RIT3rVIT+ tkH7I7R70cyvFf4yfp52e9dMOVSzA1ghuAgl4ZDz9x3fICk4FPr5t9fIIkK+Qsw6YKjT hk4Q== X-Forwarded-Encrypted: i=1; AFNElJ9xbaW92bARQfyRVs7zx+8IAIC23yr9qQ1NB12JZrH9CfeVJI7vcJ1IERvjA+oo/9Kr5M5f+o+GlJD5eyA=@vger.kernel.org X-Gm-Message-State: AOJu0Yy438Ar0hN2Qmh/0smQa9t/j71t9GG56jSBsebdP9VzOtcQkM4w dzF3axOf4xr/GiCVJtZCEF1eFon697KuU81ccAGJ9Ls4lwserHPEv87os7XzHS5Rt5Q= X-Gm-Gg: Acq92OHN5w9pDjpGh0vs05qLunvpBgMWDXptPvaavK99XBuRbKzDlMBJa9RfyCR+2er xnsfLRjR7iaKFB5SXNHN/YpkaOzg8sa0ByqGNYflqTobBG7QWCPFFYksjDtAbw7VJtNjD+uiM/I IjXx0215Rb7A93kG4TtFmq/W6RYl/NqFwS2yp3CsTvtjDcEKIhtrSZik4X5ku1KfeKCN+Ey7Yg9 wAN8fiHx1BUCg8ReEEBxKVuaM27q8z/XPOU+8V6IR/ZIvm3sXC9tzz0aAluTIosbBAhVpaJzOuc enqkY0+j/DKnZ6/4ocJU1ttD09Yeg0KCBWSSPgEqyv4fO8LmPfI67jnxVv25A3kcX43iDbJjaPx KrfnejDN0t7JQsrpwNV+MuD65ajd/nlP/0KSETfX0pib5MErDDPn0rUo+CipnX4V3GbANgoCDGf 0pdP7bl+wPUfEQlqrL/4FwErSG4pFs9f20 X-Received: by 2002:a17:907:72cf:b0:bd8:f776:6980 with SMTP id a640c23a62f3a-beab0cd17acmr906172966b.10.1780405413366; Tue, 02 Jun 2026 06:03:33 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bef0874a308sm121575866b.19.2026.06.02.06.03.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:32 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:02:53 -0300 Subject: [PATCH bpf-next RESEND v12 04/11] selftests/bpf: Avoid rebuilds when running emit_tests Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-4-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=1555; i=rbm@suse.com; h=from:subject:message-id; bh=KQMQ4HA7sxO7BUSzHCnxywkdpfJKSWuXs/B8rKOPhnI=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QJVp2o2ipGMRt38bfAm/cSRpwXsGhnDw6nwPiUVeigzN4J/zhtbOkN4oCrGluohl4eAH++dD3Uw ZUULOQR40ZAo= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g emit_tests is used while installing selftests to generate the kselftest list. Pulling in .d files for this goal can trigger BPF rebuild rules and mix build output into list generation. Skip dependency file inclusion for emit_tests, like clean goals, so list generation stays side-effect free. Also add emit_tests to NON_CHECK_FEAT_TARGETS so that feature detection is skipped; without this, Makefile.feature's $(info) output leaks into stdout and corrupts the test list captured by the top-level selftests Makefile. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index dc1f4a4a3582..49f6a5503e84 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -170,7 +170,7 @@ endef =20 include ../lib.mk =20 -NON_CHECK_FEAT_TARGETS :=3D clean docs-clean +NON_CHECK_FEAT_TARGETS :=3D clean docs-clean emit_tests CHECK_FEAT :=3D $(filter-out $(NON_CHECK_FEAT_TARGETS),$(or $(MAKECMDGOALS= ), "none")) ifneq ($(CHECK_FEAT),) FEATURE_USER :=3D .selftests @@ -732,7 +732,7 @@ $(TRUNNER_TEST_OBJS:.o=3D.d): $(TRUNNER_OUTPUT)/%.test.= d: \ $(TRUNNER_BPF_SKELS_LINKED) \ $$(BPFOBJ) | $(TRUNNER_OUTPUT) =20 -ifeq ($(filter clean docs-clean,$(MAKECMDGOALS)),) +ifeq ($(filter clean docs-clean emit_tests,$(MAKECMDGOALS)),) include $(wildcard $(TRUNNER_TEST_OBJS:.o=3D.d)) endif =20 --=20 2.54.0 From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B6B2C3E5EF0 for ; Tue, 2 Jun 2026 13:03:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405421; cv=none; b=aiWrNr1xRenDJICG58XC/o+zpk4Rc0dDKS4jUH8pzxyOFEVq0EuGQiuXWYvSYo85EeOALN+7PHSjO9bKTblntulQgR2Xrm5wqR1FwMBJYBSlIzHSBEZmxiqdjqMs3vF9jW3q0SghwPqBsPRn1/i4f/2CWR/5E8BUwKVvoNdWWtA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405421; c=relaxed/simple; bh=h9YPiCy3D78JKFK96WbgjB0Gv9K8gRrn758T4BLo7I4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HWvCyIOxRx3GSYQ15X8Rw9xN3Xpzpyu7FBInZ0vZ1qRo1bbWsu+RtBPi8jUx6LSKOO3g1ZUmi7frZtyV3GqLt3xaOGOJ/NaefgeTmoYIL6Y9Q/3vQVS0XngtAVZKgSt0OXyQftuql9XuoYSpvNCm9UATtDzafV2znnS/0u1w3cE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=Vlwgv8vB; arc=none smtp.client-ip=209.85.208.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="Vlwgv8vB" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-68c3421b009so5820313a12.1 for ; Tue, 02 Jun 2026 06:03:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405417; x=1781010217; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=SleKcaJS2ZrPKi8iOetVvP9OF/8OPZ5a/bR4NWlSpno=; b=Vlwgv8vBbjEei+PBqDmKwaa0C3+imgNy/sQ2ebkEHtM2/t3+tXIwoW6uNh4o1DsY97 ucTyMe7XuS/XankrDWCz2VLKTeaAziGx9fJyiI50raT2G2DnLGZ2i3zgl3FgzkJUrtu1 1WdZvNOziIrvyGWuw2Xo9qdbwFh+Cbkl9co4vr8d/YucOyGU+bXqNaXHAz7XYkQeNhEp HI9NkWVho8OxXUKsqeQGtatG1VXrFOmoJE9+XETl8KKj8oi0+f+rUsXcuK8BGgluGbdw 41Rwwh9sCMlBcwxiLN/UT4boVmJ3v1biCtw6DXE/DHfckUlUfwkzgfvGPippQKMdJ2nW gOEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405417; x=1781010217; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=SleKcaJS2ZrPKi8iOetVvP9OF/8OPZ5a/bR4NWlSpno=; b=InbLGA7JAnNeNbFGvkbPqHVHAgk+6BNeW/jIwsnGHFulRlG9+uPPvq9d++LvrPvOW5 GJVSW9jUwUgN1N9UgBx9CcAJ/ygyIXHXwEU0j9u8KS0CjX/XqhlkiY8ZQciMze1Ev5yS gV9TfwQMCORZxjNewzLzkvRSoDXEUey5OOMmUAfyXzAwCiW396cJIaBRNytOy9J4X7ZU IPCBDtiqR8/f9548VYWzY1NqulWd1xGZG6pdt/onNo1A2NR8Nfmefri/InRD4H8rJjOn JHhhBPkcpLEP8DXWSkO52I7KdUicFkk1NaiYl6rQP2xhLOktV3CMmEdIln6VCCs+HHr+ l7HQ== X-Forwarded-Encrypted: i=1; AFNElJ89ogBBKmczCWtIUQi4qC0LDQ+hRVbk3yvyRd+17tV1egWdoCh8p+oqo4u0Mrl6zSPWMsOW/juVjyl/l1g=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1Uws3MGkTd1MIGH0GuXwfbjOnDoSyJaOdbYejlNIDIy6AWAeS YM6Ce8++mMMe4bsJ6L7FVNHbbh9/zrMfshaNOHSK54X6aqRa0D/ConDAzBSIWrQTUwY= X-Gm-Gg: Acq92OE2u7t9VjFCZaMbcMjABV/g4K1U60joTvD0b6+KnHVHioNExBKrX4JjEii11I9 2HtSDa/X960d5WccXZpvyxheNhHrHLjrwHQHeZigJeupuNOxSZr4oAQnaN91/PrzKV72WdqT91Y N2suRp8Z/jHFrwtmctaiG8xgcNyqeDwzbotda7FIwa/asbJyQtvsam+aQ616St4R1V7pM7LOlyA pNaTGYUn+xm9A+nDi6319TJeKhpGFBZ9OGbjY0TcnpuxgbxkA3q+JbS9PmgUgppEiF9HdGx5qt1 0FLWrGd+9/VcJ6E7Zsumj3uGL/yYA+zbAJmzC7ubkZxYVpIXdDz6p/0EEY5jeSXxJYvQnjH90th D2nglKd9tOjXu7k7RnQLHrwT5XEUCHrJW9AgzIa5acDOrBF82PYyYoyy325gb4Pxs7xnJhx+sca P0chs/kX97yLsIGLEE8P9mTQ== X-Received: by 2002:a17:907:d11:b0:bee:7c9b:fbcb with SMTP id a640c23a62f3a-beef9fc49cemr247115566b.5.1780405417123; Tue, 02 Jun 2026 06:03:37 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-68ceb85359bsm3373260a12.22.2026.06.02.06.03.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:36 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:02:54 -0300 Subject: [PATCH bpf-next RESEND v12 05/11] selftests/bpf: Make skeleton headers order-only prerequisites of .test.d Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-5-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=2402; i=rbm@suse.com; h=from:subject:message-id; bh=h9YPiCy3D78JKFK96WbgjB0Gv9K8gRrn758T4BLo7I4=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QKabAdhXGu9n7wxD04JnGNenevlMwzntkoujlqFOAcVLNfePEOFjOxkzc/tTq4K7yqGPiLQGs/N FWoW72knPDwY= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g The .test.d dependency files are generated by the C preprocessor and list the headers each test file actually #includes. Skeleton headers appear in those generated lists, so the .test.o -> .skel.h dependency is already tracked by the .d file content. Making skeletons order-only prerequisites of .test.d means that a missing or skipped skeleton does not prevent .test.d generation, and regenerating a skeleton does not force .test.d to be recreated. This avoids unnecessary recompilation and, more importantly, avoids build errors when a skeleton was intentionally skipped due to a BPF compilation failure. $$(BPFOBJ) is intentionally kept as a normal prerequisite: a libbpf rebuild legitimately invalidates .test.d, since libbpf header changes can affect the headers .test.o sees. Only the skeleton headers are moved to order-only. Note that adding a new BPF skeleton via a modified existing local header still works correctly: GNU make builds order-only prerequisites that do not exist (the order-only qualifier only suppresses timestamp-driven rebuilds, not existence-driven builds), so a brand-new .skel.h listed in TRUNNER_BPF_SKELS is generated even when .test.d is otherwise up to date. The modified local header invalidates .test.o through the previously included .d content, forcing a recompile that regenerates .test.d with the new .skel.h dependency captured by gcc -MMD. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 49f6a5503e84..09de69a81112 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -726,11 +726,11 @@ $(TRUNNER_TEST_OBJS): $(TRUNNER_OUTPUT)/%.test.o: \ $(TRUNNER_TEST_OBJS:.o=3D.d): $(TRUNNER_OUTPUT)/%.test.d: \ $(TRUNNER_TESTS_DIR)/%.c \ $(TRUNNER_EXTRA_HDRS) \ + $$(BPFOBJ) | $(TRUNNER_OUTPUT) \ $(TRUNNER_BPF_SKELS) \ $(TRUNNER_BPF_LSKELS) \ $(TRUNNER_BPF_LSKELS_SIGNED) \ - $(TRUNNER_BPF_SKELS_LINKED) \ - $$(BPFOBJ) | $(TRUNNER_OUTPUT) + $(TRUNNER_BPF_SKELS_LINKED) =20 ifeq ($(filter clean docs-clean emit_tests,$(MAKECMDGOALS)),) include $(wildcard $(TRUNNER_TEST_OBJS:.o=3D.d)) --=20 2.54.0 From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D50793E2769 for ; Tue, 2 Jun 2026 13:03:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405423; cv=none; b=K6hHc3n4IW7GQXum5XNq+CI0/6fXsyGdzlyTzdCHf7t4e6PQLJmOfu4+8oE9bYb8QvVc99LsW2Bee8HJ+EgiMvLNf8e+HoBxSZYIZATmQbe3HYENYw9bT5vQBYuWI3Z+lokW8Nj3yPX3u8g6pd+Tu3I2RcydjzBasH/A3HULZ1g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405423; c=relaxed/simple; bh=uWNPJAMMvZz9ncMt6g8dFuRJQCqMabAEhkRHLSv2R9g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FaRTU/phdv9hIJMN52a/p6t/ZjznGtXONQ8y6oeqJ9/6Sn4LgK2ABsSMmsF6OmT8SRO5O9bKi/oNkarxXRnKohZraXGHpi2y4PHNhfZ5CAdwdGKPJTgwPNCALZNs14m1YkiczpUyBkqVch7BaWCT4qVJ2hGLn4m6GrA+6CKpcvo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=AmnFz6VH; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="AmnFz6VH" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-bebde89cfd3so379350766b.2 for ; Tue, 02 Jun 2026 06:03:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405420; x=1781010220; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=4XxjnI4cuMJlR6aAdNJiBVaZBbV9Bk2wM3k3iz92VQ8=; b=AmnFz6VH7iKgbuLF8co7yeipVvk8Ime8VomLncOB3XqnOTQEqH04aEymAbgHxWPXQX CxnJ5Mdto3szDSnZYGiuaxjD6x1CQolfamuZN/UiEw9s7auqHHjvmp1R/LmQl4o7wEwS N4WY0AWuToXUgMS1HiXIvRlRp7jMG100gho2d0hyz5b+NqdJ8ko/neqDdHKNX/sCXgK/ URAtl3xoBnBgIanpY175jmr4s9SbQ/5vHYsCgoT/0lrsfdEzYtwiZIE++oU5J9svhFxl YWLdjE2/A9GEd1WJoHqHofRvJe7A5HsF+VQt4ZX350nYkGd0S2ctegbEq4rQkFB87qDc ygDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405420; x=1781010220; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4XxjnI4cuMJlR6aAdNJiBVaZBbV9Bk2wM3k3iz92VQ8=; b=BIsudl7OabJXQhLxV7eRyJg7fXegYFl8J2J0MC2JZK1ATnmFEwhv+2JavmQt6bEv5r iQqlSnHRcJVsvwL/dO2ihyYl4sXLD3Vxb2Xm/Jl4cbwPdjzPFoxMMU37yle8YF0jcxFG vkxcxDQtleB/yF/M/tIsCYpSF7sQ9hBJlsT0fz231kHdcdCoDZ1zHjUHazh6heX53JjR Dg1wucz3ClWXxMklzWg3CzZ441MqU8FFM2EftvIJqxlXRRvOOcvqksnDm4+tXSHoRmSD hRxKj7umIRQZB0av3oMn+2FU/uUEbDLnig7b+mPfRoL1XVOclQ4d/32rbuiqYI52vMgL 2IVg== X-Forwarded-Encrypted: i=1; AFNElJ8BurXPeyNb1NCRdslogk53izNLQCKtvhYUrc+h2K1sSC2Ss2cg0j3kVV33okDxOkBcUUIdBov481pJ20E=@vger.kernel.org X-Gm-Message-State: AOJu0Ywmdawiq0l0G+x42PES244eK+F60kSM+9ywlhPWwDAVHI/LUXYU ImmXln1b4EkZ9IVQGw3kZx8qVTHnfsDQAYJNVMOgS1CXi/RWwihTu1BF+okcOSfW3Ko= X-Gm-Gg: Acq92OGc0oN6GJaJb/7/+Ytz09mL0MTx2fl9rwDHWgwu/x0g4uopGMBvNyCKRiT5Vxg BKRCQoP0aTB5hYcLyRe99rqqloCBw7ZzE769uMrfwy09p11PgyzSJha8VYYv5F8QIR2s8DdTwFb idwuFvhdaYb8LkdYsGe0ZpkAQ42/dq+SKmCxHHRpH7gXZouTfTAYh66uDptebKHtGgr8sNfs3dV LkEjlS8g24iNPusUHldOqmoiMt1E4e2pI+mtkSNCSQDCOh5+vNkFDlVLXTW98O7YO8cdY8gr5lx Q24v+Tj3k64I2FKf4c3aIFsmutbi1woaGhd1q+eC6Wzrpjfu6u7rKyN6xezW7LBy6PTQ0MTT51P p5VWErRHKQty4+CXpztkh6q6D2yk/eyTSmi2MQ4SaNtWCh91CoubsDOLE9MuFZngWq0zQDKa0wn 2TuzrFMga3RSB9e14HHR5gH0pCHHEWm8dR X-Received: by 2002:a17:906:4fc3:b0:be3:d140:2b54 with SMTP id a640c23a62f3a-beab2082dd2mr893000566b.31.1780405420163; Tue, 02 Jun 2026 06:03:40 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-be9d27f2207sm487792066b.2.2026.06.02.06.03.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:39 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:02:55 -0300 Subject: [PATCH bpf-next RESEND v12 06/11] selftests/bpf: Tolerate test file compilation failures Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-6-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=4111; i=rbm@suse.com; h=from:subject:message-id; bh=uWNPJAMMvZz9ncMt6g8dFuRJQCqMabAEhkRHLSv2R9g=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QJfDMS9D/+mnKEi0RM4P2U6qEEc/iRDpOKhEK35wD9KWU6NgFbMRVtLsZpl81hOOy3rU/imj7qV RlXJn464vjwE= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g Individual test files may fail to compile when headers or kernel features required by that test are absent. Currently this aborts the entire build. Make the per-test compilation non-fatal: remove the output object on failure and print a SKIP-TEST marker to stderr. Guard the BTFIDS post-processing step so it is skipped when the object file is absent. The linker step will later ignore absent objects, allowing the remaining tests to build and run. Group cd and CC in a sub-shell so a cd failure cannot leak into the error-handling branch and operate in the original working directory; use $@ (absolute path) for $(RM) so it cannot match an unrelated file there. Replace the $(call msg,...) in the BTFIDS block with a plain printf (the msg macro expands to @printf, which is a make-recipe construct and is invalid inside a shell if-then-fi body) and gate the printf on $(filter 1,$(V)) so verbose mode (V=3D1) does not double-print the line that the recipe shell already echoes; non-verbose modes (V unset, V=3D0, V=3D2, ...) still print the BTFIDS marker, matching the convention of the shared msg macro. Restrict tolerance to test_progs and its flavors via an inlined $(if $(filter test_progs%,$1),$(if $(PERMISSIVE),...)) check: runners with strong cross-object references (e.g. test_maps) would link-fail with a partial object set, so they keep strict semantics even when BPF_STRICT_BUILD=3D0. The check is inlined rather than stored in a helper variable so $1 is substituted at $(call) time and the per-runner result is baked into each recipe. Note on bisectability: this change is gated entirely behind PERMISSIVE for test_progs%, so default builds (BPF_STRICT_BUILD!=3D0) compile and run identically at every commit in the series. Bisecting in PERMISSIVE mode at this commit still requires the next two patches ("selftests/bpf: Skip tests whose objects were not built" and "selftests/bpf: Allow test_progs to link with a partial object set") to avoid the linker rejecting missing objects and the runtime aborting on NULL function pointers. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 09de69a81112..7739799c2566 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -588,6 +588,12 @@ endef # $2 - test runner extra "flavor" (e.g., no_alu32, cpuv4, bpf_gcc, etc) define DEFINE_TEST_RUNNER_RULES =20 +# Permissive build behaviour (skip-on-failure compile, partial-link) only +# applies to test_progs and its flavors; runners that use strong cross-obj= ect +# references (e.g. test_maps) keep strict semantics even when permissive. +# The check is inlined per-runner so $1 is substituted at $(call) time and +# the result is baked into each rule's recipe. + ifeq ($($(TRUNNER_OUTPUT)-dir),) $(TRUNNER_OUTPUT)-dir :=3D y $(TRUNNER_OUTPUT): @@ -717,11 +723,14 @@ $(TRUNNER_TEST_OBJS): $(TRUNNER_OUTPUT)/%.test.o: \ $(TRUNNER_TESTS_DIR)/%.c \ | $(TRUNNER_OUTPUT)/%.test.d $$(call msg,TEST-OBJ,$(TRUNNER_BINARY),$$@) - $(Q)cd $$(@D) && $$(CC) -I. $$(CFLAGS) -MMD -MT $$@ -c $(CURDIR)/$$< $$(L= DLIBS) -o $$(@F) + $(Q)(cd $$(@D) && $$(CC) -I. $$(CFLAGS) -MMD -MT $$@ -c $(CURDIR)/$$< $$(= LDLIBS) -o $$(@F)) $(if $(filter test_progs%,$1),$(if $(PERMISSIVE),|| \ + ($(RM) $$@; printf ' %-12s %s\n' 'SKIP-TEST' '$$(notdir $$@)' 1>&2))) $$(if $$(TEST_NEEDS_BTFIDS), \ - $$(call msg,BTFIDS,$(TRUNNER_BINARY),$$@) \ + $(Q)if [ -f $$@ ]; then \ + $(if $(filter 1,$(V)),true,printf ' %-8s%s %s\n' "BTFIDS" " [$(TRUNNER_= BINARY)]" "$$(notdir $$@)"); \ $(RESOLVE_BTFIDS) --btf $(TRUNNER_OUTPUT)/btf_data.bpf.o $$@; \ - $(RESOLVE_BTFIDS) --patch_btfids $$@.BTF_ids $$@) + $(RESOLVE_BTFIDS) --patch_btfids $$@.BTF_ids $$@; \ + fi) =20 $(TRUNNER_TEST_OBJS:.o=3D.d): $(TRUNNER_OUTPUT)/%.test.d: \ $(TRUNNER_TESTS_DIR)/%.c \ --=20 2.54.0 From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D79273E63B7 for ; Tue, 2 Jun 2026 13:03:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405426; cv=none; b=eK1XpYVbrsPRPh05yEmTWLbdf8MvPIPYK8oFFlIMS6VQ11aCARj+NyD++ACN9ELAcCnY7nDinRpwqcKTr5Mo7KidfLLUvXgHqW07slODzMpSkWrrQ0ONWwei31CO9QpquI0GiGdxMBnL74RFQHuSo5Gaif8Pj2Ju4+MinSiVQxs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405426; c=relaxed/simple; bh=M6OJfT3qSdP4lnrHz8anqee8kUQRnD0Hidbc1/0+8Oc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CtD/owbGSoPy9M1Znln6dol2nxHa1L/PYUKR6r4B0jqlGL8UZXcNJ7fBQSrFf3AwVpS1aBGlVk18kcXE2Jmq/Z/QBAb4ZJQ3bOgcZvER6B9mCBUwK6wfk8gWc1YbCwThPUs3BJSTUcWdze/5X8E3SqjgcR1ok/X/Fk6DQjvfrCg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=EvvjEvUG; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="EvvjEvUG" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-beb7f26ed62so307193866b.0 for ; Tue, 02 Jun 2026 06:03:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405423; x=1781010223; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=gvXdowVtyuI/sQdPSdYXchM5M1PBQ4p+rahyvFeZ5AI=; b=EvvjEvUGjifEvweZeOMx+Ii1vzLeXL4hFFj10r6juzFrlo/1jP2jiqs88p8YiAU0Zv RzDXLj3aRWBXjByIlMrsHyYhzGwZr5gXeZ5Bwom6TcgoJcooIhDvRNq1jkD3XAiuM5Ov d8J2zqgdYCuEMBxjKuiNYVLnW+ZAZG83xXk5PXC0TfVBCVLFiqZ3OLQdMqYfxtH/rqKP ZDLFVq1N9Ii88Zr/7K0qcxJZPNs1Sj8EjScacIxqhShynSl2rUYCujfyop810uhoPcDH Nu7OUZLI+NCfotMLPI5wBAF2CbdYcwHB6FOn7fYrFf0eBpaniwqYRbL6JjDH1igas6cB qLvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405423; x=1781010223; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gvXdowVtyuI/sQdPSdYXchM5M1PBQ4p+rahyvFeZ5AI=; b=GH19oBxSRsrmvKNVIR9VgrQq+ySss6H1451tYo73/tCjUmPspGi4lamQwf8hx30ZuA TK0TwthDouv3nPv8sWskjdNl6vxItuAdho2+SQ0l3c4CmQAEJK+F7hQm98PzlZXD5Qlp s1T/HvTil0UTji0it+KilmIS1fL5SjKeMLPPmgQ/shN4+IMGfRVApyN5MS4tlQGJ5BLC a2RS4nlTvRO0oRQtFBrWXmNUEeS3Cc+QH3WLoZPwCVHAUB2Wfl+sc0pwoeCJI4UWwy9o rt56Zy1wV+kQ3VQujIyqUvjud2FW78CwOPXG36tYFfbl0EdUZMYCl1QRfYXN/qc8Ws9L OuGA== X-Forwarded-Encrypted: i=1; AFNElJ+eNKGikVHpJxeSLul62Cwala6sTMF3MlI2VmMnSVuOfg3GPsFXZp9HDemasnq1zasmPEmhqj9is3OoiIc=@vger.kernel.org X-Gm-Message-State: AOJu0YwOjrM4kSC+SLFoRobSHu2fRbeY4qI4QWaxKMhXvFoB2tqSci7x ag6vqJ14TquZmJtNFRr7nKan2AMNDJTUkxEV3/+j8r2Io0KdimyEuj2TLZgnL0NRo5o= X-Gm-Gg: Acq92OHuigZK6yHHGby6/84fwIFcVLUUCI7gDQlfOWXcztf03GA6kbpNJvLrZ99QG0d oZy/A1MGSpcnEwV44qJAYyVRkF7pT7ZTyx9YEnWJXJhQ1oOlVckJAyvwyRQbIUfTvUAD2hysYEt qHkNPb20i3tiNg5gzd73KCu3yFAtYajIL5ZoQvqRrFBx6/LMlgbNojnld+fzUKktnjD8BUjujTS CCC+Ih368cpuMVeA5F6dvAJfAj8b5nVt19XRmIopWvc9MyRq1p/PupMtRPVkMO9kezeaP0+sR66 TNVRUxzqekfhpQ8CquQU/1R41qO9r0mtDXyNUr0TSSfDfZ0ea/dwtb9DOoocWjwOfRG3Jmlky1m 4u3qhQiGu41XmuuWVuA89DQSmdn1O4IJ1KRZdlNEJflNHE7gA2IzOZzaeMZKJOhEZ3SMIMLSGQ/ Opb+/2i96tKsgLsNMnqIaUBw== X-Received: by 2002:a17:907:9804:b0:b9d:e301:20db with SMTP id a640c23a62f3a-beab2c5b6abmr978032466b.25.1780405423224; Tue, 02 Jun 2026 06:03:43 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-beb2c4ca251sm373927366b.22.2026.06.02.06.03.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:42 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:02:56 -0300 Subject: [PATCH bpf-next RESEND v12 07/11] selftests/bpf: Skip tests whose objects were not built Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-7-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=5462; i=rbm@suse.com; h=from:subject:message-id; bh=M6OJfT3qSdP4lnrHz8anqee8kUQRnD0Hidbc1/0+8Oc=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QO42RUtnZIHndSCnnVgwe1CRNhPwoE14l/dRzm98G/1mb45WSZUdfUGPbiD+bI9ENIF801GChpW htCh5W45WLwM= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g When both run_test and run_serial_test are NULL (because the corresponding .test.o was not compiled), mark the test as not built instead of fatally aborting. Report these tests as "SKIP (not built)" in per-test output and include them in the skip count so they remain visible in CI results and JSON output. The summary line shows the not-built count when nonzero: Summary: 50/55 PASSED, 5 SKIPPED (3 not built), 0 FAILED Tests filtered out by -t/-n remain invisible as before; only genuinely unbuilt tests are surfaced. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/test_progs.c | 53 +++++++++++++++++++++++++++-= ---- tools/testing/selftests/bpf/test_progs.h | 1 + 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selft= ests/bpf/test_progs.c index cc14b13e23fe..7ba82974ee78 100644 --- a/tools/testing/selftests/bpf/test_progs.c +++ b/tools/testing/selftests/bpf/test_progs.c @@ -165,6 +165,8 @@ struct prog_test_def { void (*run_test)(void); void (*run_serial_test)(void); bool should_run; + bool not_built; + bool selected; bool need_cgroup_cleanup; bool should_tmon; }; @@ -372,6 +374,8 @@ static void print_test_result(const struct prog_test_de= f *test, const struct tes fprintf(env.stdout_saved, "#%-*d %s:", TEST_NUM_WIDTH, test->test_num, te= st->test_name); if (test_state->error_cnt) fprintf(env.stdout_saved, "FAIL"); + else if (test->not_built) + fprintf(env.stdout_saved, "SKIP (not built)"); else if (!skipped_cnt) fprintf(env.stdout_saved, "OK"); else if (skipped_cnt =3D=3D subtests_cnt || !subtests_cnt) @@ -1641,6 +1645,7 @@ static void calculate_summary_and_print_errors(struct= test_env *env) json_writer_t *w =3D NULL; =20 for (i =3D 0; i < prog_test_cnt; i++) { + struct prog_test_def *test =3D &prog_test_defs[i]; struct test_state *state =3D &test_states[i]; =20 if (!state->tested) @@ -1651,7 +1656,7 @@ static void calculate_summary_and_print_errors(struct= test_env *env) =20 if (state->error_cnt) fail_cnt++; - else + else if (!test->not_built) succ_cnt++; } =20 @@ -1700,8 +1705,13 @@ static void calculate_summary_and_print_errors(struc= t test_env *env) if (env->json) fclose(env->json); =20 - printf("Summary: %d/%d PASSED, %d SKIPPED, %d FAILED\n", - succ_cnt, sub_succ_cnt, skip_cnt, fail_cnt); + if (env->not_built_cnt) + printf("Summary: %d/%d PASSED, %d SKIPPED (%d not built), %d FAILED\n", + succ_cnt, sub_succ_cnt, skip_cnt, env->not_built_cnt, + fail_cnt); + else + printf("Summary: %d/%d PASSED, %d SKIPPED, %d FAILED\n", + succ_cnt, sub_succ_cnt, skip_cnt, fail_cnt); =20 env->succ_cnt =3D succ_cnt; env->sub_succ_cnt =3D sub_succ_cnt; @@ -1772,6 +1782,19 @@ static void server_main(void) run_one_test(i); } =20 + /* mark not-built tests as skipped */ + for (int i =3D 0; i < prog_test_cnt; i++) { + struct prog_test_def *test =3D &prog_test_defs[i]; + struct test_state *state =3D &test_states[i]; + + if (test->not_built && test->selected) { + state->tested =3D true; + state->skip_cnt =3D 1; + env.not_built_cnt++; + print_test_result(test, state); + } + } + /* generate summary */ fflush(stderr); fflush(stdout); @@ -2046,15 +2069,20 @@ int main(int argc, char **argv) struct prog_test_def *test =3D &prog_test_defs[i]; =20 test->test_num =3D i + 1; - test->should_run =3D should_run(&env.test_selector, - test->test_num, test->test_name); + test->selected =3D should_run(&env.test_selector, + test->test_num, test->test_name); + test->should_run =3D test->selected; =20 - if ((test->run_test =3D=3D NULL && test->run_serial_test =3D=3D NULL) || - (test->run_test !=3D NULL && test->run_serial_test !=3D NULL)) { + if (test->run_test && test->run_serial_test) { fprintf(stderr, "Test %d:%s must have either test_%s() or serial_test_%= sl() defined.\n", test->test_num, test->test_name, test->test_name, test->test_name); exit(EXIT_ERR_SETUP_INFRA); } + if (!test->run_test && !test->run_serial_test) { + test->not_built =3D true; + test->should_run =3D false; + continue; + } if (test->should_run) test->should_tmon =3D should_tmon(&env.tmon_selector, test->test_name); } @@ -2106,9 +2134,18 @@ int main(int argc, char **argv) =20 for (i =3D 0; i < prog_test_cnt; i++) { struct prog_test_def *test =3D &prog_test_defs[i]; + struct test_state *state =3D &test_states[i]; =20 - if (!test->should_run) + if (!test->should_run) { + if (test->not_built && test->selected && + !env.get_test_cnt && !env.list_test_names) { + state->tested =3D true; + state->skip_cnt =3D 1; + env.not_built_cnt++; + print_test_result(test, state); + } continue; + } =20 if (env.get_test_cnt) { env.succ_cnt++; diff --git a/tools/testing/selftests/bpf/test_progs.h b/tools/testing/selft= ests/bpf/test_progs.h index 37955a8ad385..2cf950afcd85 100644 --- a/tools/testing/selftests/bpf/test_progs.h +++ b/tools/testing/selftests/bpf/test_progs.h @@ -125,6 +125,7 @@ struct test_env { int sub_succ_cnt; /* successful sub-tests */ int fail_cnt; /* total failed tests + sub-tests */ int skip_cnt; /* skipped tests */ + int not_built_cnt; /* tests not built */ =20 int saved_netns_fd; int workers; /* number of worker process */ --=20 2.54.0 From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 40B363E95B2 for ; Tue, 2 Jun 2026 13:03:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405429; cv=none; b=Ut0MpWrrgkPrbgec4aIFPvb6h7n1tWoZHP9oCB93Dx8awfnOfj72pJXLUvlfyfiOZobOKVjg6pjJdxA8h+kQA/aWr0uuBayfWek4PUJdlstykp3yuPj4Z958Zaf1Rp+aausQ08YuKE+RFXlvvIxz0HnkrWtWUuvOUc0YFIMso0A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405429; c=relaxed/simple; bh=7A4fZQx0aF/J8ZiO4w5oZwZY/WHVX7IeMpF2Uvg7m20=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YN58PjfGUqP3wWJTgfBsgNSpu/iSVmzVAzCj/9Xp12h42Z7g4qZIZ7YpsLfKFw9QSsHAxihbH93Lp/NMqj9LC0rBY2Re/CQPaxDZQrJsGTkKPp6UcJeMPef/zNXxAH69+MJcOV+rrVdb1IGrjssNrdgI26niYX86pqbAeIXhtbA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=HcVj9Xki; arc=none smtp.client-ip=209.85.208.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="HcVj9Xki" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-68bac6e24fdso7073336a12.1 for ; Tue, 02 Jun 2026 06:03:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405427; x=1781010227; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Qcfi42iIquMiKz4IUa3Xe6ZkcXakXKvJ4psdLxPT3Cc=; b=HcVj9XkiS47kvXQ1v3kBUPN4KBKRp4BpUU54RZax8FbQGFDijCO/lCDI6TE0Z78cjn PkBfiu/AXWFi5wOLh5kJGXwrBa9tQPxY7esA6qudqZBHLzWkCSyXQ3Dq4hnRt8Q7j9uj 6pY6YdzKPJl7duzbdNjaHEw4dBzhZOuy3sRzxTL0esAz6BH7ChCBmfSCMMGZyDBilo86 l/7Muv6OSXjzsFRdZ4QADc56r2tk+/kAkupNXZ5e6mGPDCP2IsDuaXPCWYUjZBYo9eZk 7DAIraopSaqgIvWOEogblCMksFjYZmoUzSDstCBIYhsThZNrNhwoadayzvLUI432KVAi NVZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405427; x=1781010227; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Qcfi42iIquMiKz4IUa3Xe6ZkcXakXKvJ4psdLxPT3Cc=; b=qgTBrqNFk4MugMMoFyKTaJa+isd3C1oSYwPH8fSe71UetpI5GuIc8rIDP5mQDHecwz ojMJT+EjWq0fmwD2Ducn37TftiAvxa5CAaznZHlNCGw1dHE8J8bH/P+sv4FgaX9J7oXT acXWYvzNN8V6G9qVhP3kNL6m9THSQu0cuG2eXheinRZlwGs2YrCGPkddVuC1tuBXFf9u jWk1AOsMFfFmgAzGJTnsp6eihX33AZsYNscksQwL2uh09zPWNrwDem53csRVjAL1clgF w1kzdo3tfM1eJpuoNuN+ZckkjiRhrcurwTYQveWCRkAasBAD3Lt9CY6kAJ7bzyu4Ckf6 7A+w== X-Forwarded-Encrypted: i=1; AFNElJ8h+tY9u9W3SOHe3CXMgGV0A/6wSjNMOsE2NeD0baxq5zLtHQSvXxImTv8NvN9q7qF/tewPckpJ7TPYNaE=@vger.kernel.org X-Gm-Message-State: AOJu0YxRc1NxNsgpQSKReRfTxe0guTvn11EhfeDPDsJPFr493bGXGiC5 6MjcUAZD/iclGyWCTeZgP4YSntkrqaB/Gx0SGl0Jb/XX/xpAOfv89CLOurZzrDxOgvo= X-Gm-Gg: Acq92OEjYQ9or4PU0gXUFEm1pClAvn9OM0ywIXYWGA8gj0XhLjztEiRqz7JBSgQVQ/4 ynBaCGVKBH4PlxVVQCDap833xDAlrf8Ue+v6VtIlJVCZeNOAq2dB9mIPGYY56XXYJyoUs+y1IbZ rR+AaATTRbCfGFK9evFasmFemV0PqDLNpcSChCSKrvB84l+/hmbRG/UlEhsgTKKZViFexfg+NKy NxmkfO+YKoeRzjN42ZdS66oKdcT9XadA6vxEhfwvcQmVNOVfUU1eCRpu3osom7S6C7P0f7WaCJ9 u/ZG5XncvKEJvB9RGwSXQFZRuSt0LwvgbC+KkZPeDH1+k05g7b5LYJiOtMQZJxZZ5R7SjfMGABZ of5Oq+sev2fYulK9UWQiEk0/8g5NX5JS4cVJ0SzqfyRBX6YSM8K/7uxLMenOAAwlSho67NUBVxk kJROlQsbYXTUeTCchF20c9Ew== X-Received: by 2002:a17:907:da6:b0:bee:b5f2:6385 with SMTP id a640c23a62f3a-beeb5f274b6mr310434366b.11.1780405426568; Tue, 02 Jun 2026 06:03:46 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bef89493f1dsm79315566b.59.2026.06.02.06.03.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:45 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:02:57 -0300 Subject: [PATCH bpf-next RESEND v12 08/11] selftests/bpf: Allow test_progs to link with a partial object set Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-8-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=3578; i=rbm@suse.com; h=from:subject:message-id; bh=7A4fZQx0aF/J8ZiO4w5oZwZY/WHVX7IeMpF2Uvg7m20=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QBG1tN2EHmzMbhlbqbAZoP4pxTRHSDvZe6y2rsZ4MnYO4yU0yK25T54cnpL45Vvl7K+m3C/O/Nk i3a3CYjMjywY= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g When individual test files are skipped due to compilation failures, their .test.o files are absent. The linker step currently lists all expected .test.o files as explicit prerequisites, so make considers any missing one an error. In permissive mode, declare the test objects that already exist on disk (via parse-time $(wildcard ...)) as normal prerequisites of the binary so that modifications to a test source still trigger a relink, and keep the full TRUNNER_TEST_OBJS list as order-only prerequisites so that initial fresh builds still produce them and missing objects do not abort the link. The recipe filter is split per mode: in permissive mode it combines a recipe-time $(wildcard ...) (which catches objects freshly produced via the order-only path on a fresh build) with $(filter-out $(TRUNNER_TEST_OBJS),$^) (which keeps the non-test inputs from $^ but drops the parse-time wildcard duplicates). This avoids passing the same .test.o twice to the linker while still presenting test objects before libbpf.a so that GNU ld, which scans static archives left-to-right, pulls in archive members referenced exclusively by test objects (e.g. ring_buffer__new from ringbuf.c). In default (strict) mode the recipe remains the simple $(filter %.a %.o,$^) since TRUNNER_TEST_OBJS is part of $^ exactly once. Gate the partial-link behavior on $(if $(filter test_progs%,$1),...) so it only applies to test_progs and its flavors. test_maps and similar runners using strong cross-object references would link-fail with a partial set and intentionally retain strict link semantics. Note: adding a brand-new test_*.c file in permissive mode requires removing the binary (or a clean rebuild) before the new test is linked in, because the parse-time $(wildcard ...) is evaluated when the Makefile is read and will not yet see the new .test.o. This is acceptable since permissive mode targets tolerant CI builds rather than incremental development. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 7739799c2566..bc845022a7ef 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -773,14 +773,15 @@ endif # some X.test.o files have runtime dependencies on Y.bpf.o files $(OUTPUT)/$(TRUNNER_BINARY): | $(TRUNNER_BPF_OBJS) =20 -$(OUTPUT)/$(TRUNNER_BINARY): $(TRUNNER_TEST_OBJS) \ +$(OUTPUT)/$(TRUNNER_BINARY): $(if $(filter test_progs%,$1),$(if $(PERMISSI= VE),$$(wildcard $(TRUNNER_TEST_OBJS)),$(TRUNNER_TEST_OBJS)),$(TRUNNER_TEST_= OBJS)) \ $(TRUNNER_EXTRA_OBJS) $$(BPFOBJ) \ $(TRUNNER_LIB_OBJS) \ $(TRUNNER_BPFTOOL) \ $(OUTPUT)/veristat \ - | $(TRUNNER_BINARY)-extras + | $(TRUNNER_BINARY)-extras \ + $(if $(filter test_progs%,$1),$(if $(PERMISSIVE),$(TRUNNER_TEST_OB= JS))) $$(call msg,BINARY,,$$@) - $(Q)$$(CC) $$(CFLAGS) $$(filter %.a %.o,$$^) $$(LDLIBS) $$(LLVM_LDLIBS) $= $(LDFLAGS) $$(LLVM_LDFLAGS) -o $$@ + $(Q)$$(CC) $$(CFLAGS) $(if $(filter test_progs%,$1),$(if $(PERMISSIVE),$$= (filter %.a %.o,$$(wildcard $(TRUNNER_TEST_OBJS)) $$(filter-out $(TRUNNER_T= EST_OBJS),$$^)),$$(filter %.a %.o,$$^)),$$(filter %.a %.o,$$^)) $$(LDLIBS) = $$(LLVM_LDLIBS) $$(LDFLAGS) $$(LLVM_LDFLAGS) -o $$@ $(Q)ln -sf $(if $2,..,.)/tools/build/bpftool/$(USE_BOOTSTRAP)bpftool \ $(OUTPUT)/$(if $2,$2/)bpftool =20 --=20 2.54.0 From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F39213EA963 for ; Tue, 2 Jun 2026 13:03:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405432; cv=none; b=T99u8T+Ix5B0j0oRTeodhNqJ9QWXkP19ghRQ2ylRvSS7tgzt5VPonXHp9onXxToL+FgsJFq4NQtTE2FiwaTa8RDOGwnJ0dE/0A1A5gCNYkqoc7FKtyQfm+YoMjqM3Yv4pwgpsXCL2Wl3/IuXx86p9qE44xptSxu45cyCFdDrGc8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405432; c=relaxed/simple; bh=WDLnHiZPtsQn+nJrqLJZCP+unVavs2qfj0Icse9NGF8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QMSDNNi5c1aSqgNSLQBD24w7kcW9CmbMsOUef5AzWB9pu2BXPzxVdNUEXMu9GvGBfyYlLKTRYYF96LURxOfXpi+eVFhQhooTmvES0PFpC7DslIDNn+/FGQZr46TZi7ugZWGrCStLUGPpHrE+f+e6VgI46DolmyaUI0h5ZA+KuKY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=K47k+/M5; arc=none smtp.client-ip=209.85.218.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="K47k+/M5" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-bec429c2bb1so352929866b.1 for ; Tue, 02 Jun 2026 06:03:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405429; x=1781010229; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=RALhkDAmVWzUkKWUeiSZlbMaX2cF2Z8Q6irmSkI6Xu0=; b=K47k+/M5Mnt81D1NBeHmlHjKLBcVWDW+b4FQVxLXtZ3yFD7R5jV+MmSQC+0gaeHnPo TUbU8eSwLkLdY7KtOFqTYkpHrxA69aNxegxHJxpzvg4WfwZYiCKL+sL5C5nOp/ld4PIO atrzYWTZWhnUZLXPpsgRsId8JA7Ia0qe+g2dKr5UNgcLQ/CIV7poluwxYPpAfpMmGSdF SM6COPql3NG7zYs2s1/7NGu8ZK3bVKv1BB8VV5hwzwIlV1lHamyj+C7UARN8z+vTbJA4 XMMy33bPLK/UwU+fahHee3VXcWeP0nB1DysACafj9rRnTmckoM0ice3T02fqOHJQRd66 wdkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405429; x=1781010229; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RALhkDAmVWzUkKWUeiSZlbMaX2cF2Z8Q6irmSkI6Xu0=; b=R9rjjs2TNKuehBmqo3ajbxUb9mryxJ6SW1zn5kK3mSRTax7UiraBxMVSiU818A0Vzk LagQfc03mbQDZlTIHTCvSPTrsT2VPZqBoTNripC/8HrE17vjAMJn9AlK9XBdDreLqp0Z OgwI/PldKe4eyKNHLg7UMmMcBpPaO3Yico3qe3tctrLJnKnb9fcOs9men5RRjB3Dgcaa S7/Vh3hjCKt+Cx6AhYN5/ocUIsChBTSfteHikFslvScl9bqPxL6/jRB8LUU11ElA0K2k ibaOvZ2lZId0Z3xWrH1Btr9Wrx3DMp1mo9jyFrdptQMXHL3ic3yTDZsuCEHipUJMC2B3 ZQvA== X-Forwarded-Encrypted: i=1; AFNElJ9wR41VKQEPRVIUn7+qhOEvUFBBypogmsgkqAjUwu3mbVM/4tfCTV02BtyMwKCBLZlbpsWC+6G7JC3vBvk=@vger.kernel.org X-Gm-Message-State: AOJu0YwY119EqHecBs3AB1JGZjkjyYphV/GH71P5uLpGuw0ICM1EYfBH BfK+Z3Ew3IK4M9ylUrOwb3X1Yn58kl/JRaZP+99jld1YD+K4Hv8jUBMSp5PcwiXBWM4= X-Gm-Gg: Acq92OFBANhVXDKEwSCij5rz/IH1D7wL+sTGXAYSpEOYUmYt96/tFKmLMB1YQkhbcys NBV13Mn17L2k8F0Cra9Yve0GLEb/SSVL5+/wqiqt6oCXOSx+guHXkywkHcuZxF9GpfhxY49boos GawQ0w9Mi4CgOIvePir4J8YNvLWgJBkWELk8dQeHrDiddHURekNYU2vUi0pETtV8t1f9tfMPzCB 8QsbyWXi9/F93EzLq3q8H4ogMVS3+Qiak0E6ZWlQ+QJcR8ZjzrmnhFHc9KU/LGMT6K+dH22G1na xIPYnzisULVYXhSbeLZcffymmmb46k0W6mSgImPn7OCHzwJk1ajtePkbetpw78Bup5MvCO4iZvx ZYEvWaYpNp0VxlEolj8Hs790em2GPgWIN6Ltmgd24FEQOUur8NTXGcDV6DwP0OXrHbXEwZHkvnt echxIrNo9ua+nDlqzzpBhhgw== X-Received: by 2002:a17:906:45a0:b0:bef:12f:346b with SMTP id a640c23a62f3a-bef012f3d62mr204216666b.15.1780405429527; Tue, 02 Jun 2026 06:03:49 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-be9d2de5c60sm493403766b.16.2026.06.02.06.03.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:49 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:02:58 -0300 Subject: [PATCH bpf-next RESEND v12 09/11] selftests/bpf: Tolerate benchmark build failures Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-9-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=2182; i=rbm@suse.com; h=from:subject:message-id; bh=WDLnHiZPtsQn+nJrqLJZCP+unVavs2qfj0Icse9NGF8=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QKMXfHUk1I1JTIi4GTbj16UrnRNnyc+KvHxKx4cxzf3g9RoKrr0SQ0O3kfcYEedas1BqOUIhlYq o/u4jLX9QRgs= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g Benchmark objects depend on skeletons that may be missing when some BPF programs fail to build. In that case, benchmark object compilation or final bench linking should not abort the full selftests/bpf build. Keep both steps non-fatal, emit SKIP-BENCH or SKIP-LINK, and remove failed outputs so stale objects or binaries are not reused by later incremental builds. Note that because bench.c statically references every benchmark via extern symbols, partial linking is not possible: if any single benchmark object fails, the entire bench binary is skipped. This is by design -- the error handler catches all compilation failures including genuine ones, but those are caught by full-config CI runs. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index bc845022a7ef..4eebc15670e3 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -945,7 +945,8 @@ $(OUTPUT)/test_cpp: test_cpp.cpp $(OUTPUT)/test_core_ex= tern.skel.h $(BPFOBJ) # Benchmark runner $(OUTPUT)/bench_%.o: benchs/bench_%.c bench.h $(BPFOBJ) $(call msg,CC,,$@) - $(Q)$(CC) $(CFLAGS) -O2 -c $(filter %.c,$^) $(LDLIBS) -o $@ + $(Q)$(CC) $(CFLAGS) -O2 -c $(filter %.c,$^) $(LDLIBS) -o $@ $(if $(PERMIS= SIVE),|| \ + ($(RM) $@; printf ' %-12s %s\n' 'SKIP-BENCH' '$(notdir $@)' 1>&2)) $(OUTPUT)/bench_rename.o: $(OUTPUT)/test_overhead.skel.h $(OUTPUT)/bench_trigger.o: $(OUTPUT)/trigger_bench.skel.h $(OUTPUT)/bench_ringbufs.o: $(OUTPUT)/ringbuf_bench.skel.h \ @@ -994,7 +995,8 @@ $(OUTPUT)/bench: $(OUTPUT)/bench.o \ $(OUTPUT)/usdt_2.o \ # $(call msg,BINARY,,$@) - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(filter %.a %.o,$^) $(LDLIBS) -o $@ + $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(filter %.a %.o,$^) $(LDLIBS) -o $@ $(if = $(PERMISSIVE),|| \ + ($(RM) $@; printf ' %-12s %s\n' 'SKIP-LINK' '$(notdir $@) (some benchma= rks may have been skipped)' 1>&2)) =20 # This works around GCC warning about snprintf truncating strings like: # --=20 2.54.0 From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 22C153EC2E1 for ; Tue, 2 Jun 2026 13:03:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405436; cv=none; b=BG6SeJvY29vutHgn71wEYFCGzneqbePH4RlDF8gztkLHLAWKRevXiGqJip1w5Xbox7c23oGLzQegR7YQTTQiKpdhaEyXKyX5IJAJiaXk43VOQhBG017TzcHF0wXq1FwRVCFYERLA+SSd96MTriwiIpVRQDxBxxbqE/8gFHR+LPI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405436; c=relaxed/simple; bh=PEQ/hH8f9EfEO3m9jfnl1sYEE2Fvx6y97vzN398bHFI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ijC3mnN7+dvr46BEoE8AK4XHNn4j15VoMBsuxSvDf+QbGQJ2BBf+S8Py4IDgx1YprjqDNGAS/5K+J3XE1fX7tYiL548IJp8eoc7E0p89i9fphnhsOo72HEqqwgTv+dBQSqBty4wbt2GGgStO7Tg/HRgB84R9YkO5PNc/yctuntg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=awcJThJM; arc=none smtp.client-ip=209.85.218.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="awcJThJM" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-bd8f9725b30so2060196866b.3 for ; Tue, 02 Jun 2026 06:03:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405432; x=1781010232; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=da/3P3gWrWPT2pVZ+wpt21mcmTeD9JLfhBM9QpqBcIo=; b=awcJThJMdlJPj+rBAMyST3ZbKi+/sLdyJcFbLSZk4OaYlZJlbnNPaaWqXrJgMuKszp RUa2ayYx7zDF+jCeAxGWWUxN+Ljilhgdwa+Eq+xL4yH4a0D5EbTN1Bxogb6OH4AtkOSq YvLeUh3opdM+zVbLko1YM3FzkDc4p5IKKPaPAhbJoFdTjkv17OyTzdpOgqJBGb/398SM oClzw7QOrqbnXJkRGipm4vdQET0Dd4p1858lnHYk4iqapmgiw76ssjJOhOP0cn1Uyh1E mi+V4mjG1aEfuSTLN0xORZcVw7R7y2Q5AwZaY6o5eRj30wXYLttz8TVq3wZGqIHxqXCU m7qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405432; x=1781010232; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=da/3P3gWrWPT2pVZ+wpt21mcmTeD9JLfhBM9QpqBcIo=; b=TKrRewhkE7kWEs/V1MIr0n2/EZvFKeD2sqzbnLvl38X1ZaCmuvnWTSkLXKwmchJsl/ lju/EJuuqso0MGNfcQgDk0YwECKc3/0BeBXNIrnxQ7Av2Y0Mv2GCKqeCrnE3jWjdoiz0 EuzbcfMBN8hskIm6FNHlyEWlpvOU97wxZbKzm15KeVM/BchN+hz+19nCW9IeezICKA40 133O+Kit6ojJhdMwewt9t11uhiUv74NOGbW0iTO+d4Wnn49f82WAnNzA5ajwnoyZw72K Cauvu704QP//Xxk7tY+rDU0/KvmmlZXUnbIvZhFZmm5jl35RzXp7l7GTywGDLYlfiLc5 bJNg== X-Forwarded-Encrypted: i=1; AFNElJ9411yCzBtxCYS3OtPyazZ3ImQTKzZrrluukNlwiiLF21Lx7nS+0s2iyhsUxvczzRH6hhnvo2WoPnZrx/Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yz3y8rOoRovjrFqoPcf8CnR4DLSTsOWtjlaunbjFL7FlJ1xFarT 6P/2pf1CX4GvAuH2K3i6sK2UW58gJUrylgbKbTythYGTHvw+a38aAb/9g76c8EMlYZI= X-Gm-Gg: Acq92OGTu4S/anEWEoarU0ufp01u+V+kzDK1Ji/i82sp9tIP1WW9D3Kv8eWBYLzQxab cxarxqbTaQiES2+inadg7WG7WOFSRhZuRpKxgz6Bl3zwLkdlGh8BgV0L5SKcJc29qYe2VU7rAtj B3SZ7UNY9VUm9vqnmgk4Jb4jzZgjZsy5bp5sWGwLHu9z/X2ixbpdnbLj00nl8jnkOSkTgbRgn9v igVMl4P+j9rX8rgXW6ve2/E1wXvMsJHY6ubpLSIDQkTmylUfAd76jU4jQa9ybevWHPQ64Arr3f3 KSQNH/cl+COs3NchmG1tA3gr8Qm+yv6uah87jodzvyCZ9391L89gzm3RmOZnrc6Uvj+9DA83slc 3C2VkeWTCuva/IS28oKYna6nDBn9gGnvpUQd0Bel+aHkPYIamDvt7xxeSaG7qGaxQYH+SXJsvIa 9YceIOLYas84ns8rLIGA30Cg== X-Received: by 2002:a17:907:c5c5:b0:bed:5774:7c17 with SMTP id a640c23a62f3a-bed577482b9mr538543966b.5.1780405432457; Tue, 02 Jun 2026 06:03:52 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-beed0fc69b3sm146958666b.39.2026.06.02.06.03.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:52 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:02:59 -0300 Subject: [PATCH bpf-next RESEND v12 10/11] selftests/bpf: Provide weak definitions for cross-test functions Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-10-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=5710; i=rbm@suse.com; h=from:subject:message-id; bh=PEQ/hH8f9EfEO3m9jfnl1sYEE2Fvx6y97vzN398bHFI=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QBTVRNTxzUi2XqPufZT6zDHYVbUJnRE3O4cjr+vAN+hD8V/ct6HjyUPc1u/rn/AEEo5GqZ65Kw3 praTwzC1ksQA= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g Some test files reference functions defined in other translation units that may not be compiled when skeletons are missing. Replace forward declarations of uprobe_multi_func_{1,2,3}() with weak no-op stubs so the linker resolves them regardless of which objects are present. The stub bodies are `asm volatile ("")` rather than empty, matching the shape of the strong definitions in prog_tests/uprobe_multi_test.c. This keeps the weak and strong sides on the same footing for the optimiser (noinline + asm-barrier), which is the form upstream already relies on for these functions. Move stack_mprotect() from test_lsm.c into testing_helpers.c so it is always available. The previous weak-stub approach returned 0, which would cause callers expecting -1/EPERM to fail their assertions deterministically. Having the real implementation in a shared utility avoids this problem entirely. Include for alloca() so the build does not rely on glibc's implicit declaration via . Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- .../testing/selftests/bpf/prog_tests/bpf_cookie.c | 17 +++++++++++------ tools/testing/selftests/bpf/prog_tests/iters.c | 2 -- tools/testing/selftests/bpf/prog_tests/test_lsm.c | 22 ------------------= ---- tools/testing/selftests/bpf/testing_helpers.c | 18 ++++++++++++++++++ tools/testing/selftests/bpf/testing_helpers.h | 1 + 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c b/tools/te= sting/selftests/bpf/prog_tests/bpf_cookie.c index 35adc3f6d443..fa484d00a7a5 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c @@ -252,10 +252,17 @@ static void kprobe_multi_attach_api_subtest(void) kprobe_multi__destroy(skel); } =20 -/* defined in prog_tests/uprobe_multi_test.c */ -void uprobe_multi_func_1(void); -void uprobe_multi_func_2(void); -void uprobe_multi_func_3(void); +/* + * Weak uprobe target stubs. noinline is required because + * uprobe_multi_test_run() takes their addresses to configure the BPF + * program's attachment points; an inlined function has no stable + * address in the binary to probe. The strong definitions in + * uprobe_multi_test.c take precedence when that translation unit is + * linked. + */ +noinline __weak void uprobe_multi_func_1(void) { asm volatile (""); } +noinline __weak void uprobe_multi_func_2(void) { asm volatile (""); } +noinline __weak void uprobe_multi_func_3(void) { asm volatile (""); } =20 static void uprobe_multi_test_run(struct uprobe_multi *skel) { @@ -574,8 +581,6 @@ static void tracing_subtest(struct test_bpf_cookie *ske= l) close(fmod_ret_fd); } =20 -int stack_mprotect(void); - static void lsm_subtest(struct test_bpf_cookie *skel) { __u64 cookie; diff --git a/tools/testing/selftests/bpf/prog_tests/iters.c b/tools/testing= /selftests/bpf/prog_tests/iters.c index a539980a2fbe..c0b6082f345a 100644 --- a/tools/testing/selftests/bpf/prog_tests/iters.c +++ b/tools/testing/selftests/bpf/prog_tests/iters.c @@ -202,8 +202,6 @@ static void subtest_task_iters(void) iters_task__destroy(skel); } =20 -extern int stack_mprotect(void); - static void subtest_css_task_iters(void) { struct iters_css_task *skel =3D NULL; diff --git a/tools/testing/selftests/bpf/prog_tests/test_lsm.c b/tools/test= ing/selftests/bpf/prog_tests/test_lsm.c index bdc4fc06bc5a..d7495efd4a56 100644 --- a/tools/testing/selftests/bpf/prog_tests/test_lsm.c +++ b/tools/testing/selftests/bpf/prog_tests/test_lsm.c @@ -5,36 +5,14 @@ */ =20 #include -#include #include #include -#include -#include =20 #include "lsm.skel.h" #include "lsm_tailcall.skel.h" =20 char *CMD_ARGS[] =3D {"true", NULL}; =20 -#define GET_PAGE_ADDR(ADDR, PAGE_SIZE) \ - (char *)(((unsigned long) (ADDR + PAGE_SIZE)) & ~(PAGE_SIZE-1)) - -int stack_mprotect(void) -{ - void *buf; - long sz; - int ret; - - sz =3D sysconf(_SC_PAGESIZE); - if (sz < 0) - return sz; - - buf =3D alloca(sz * 3); - ret =3D mprotect(GET_PAGE_ADDR(buf, sz), sz, - PROT_READ | PROT_WRITE | PROT_EXEC); - return ret; -} - int exec_cmd(int *monitored_pid) { int child_pid, child_status; diff --git a/tools/testing/selftests/bpf/testing_helpers.c b/tools/testing/= selftests/bpf/testing_helpers.c index 6fbe1e995660..c970e7793dfc 100644 --- a/tools/testing/selftests/bpf/testing_helpers.c +++ b/tools/testing/selftests/bpf/testing_helpers.c @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include #include #include "disasm.h" @@ -516,3 +518,19 @@ bool is_jit_enabled(void) =20 return enabled; } + +int stack_mprotect(void) +{ + void *buf; + long sz; + int ret; + + sz =3D sysconf(_SC_PAGESIZE); + if (sz < 0) + return sz; + + buf =3D alloca(sz * 3); + ret =3D mprotect((void *)(((unsigned long)(buf + sz)) & ~(sz - 1)), sz, + PROT_READ | PROT_WRITE | PROT_EXEC); + return ret; +} diff --git a/tools/testing/selftests/bpf/testing_helpers.h b/tools/testing/= selftests/bpf/testing_helpers.h index 2ca2356a0b58..2edc6fb7fc52 100644 --- a/tools/testing/selftests/bpf/testing_helpers.h +++ b/tools/testing/selftests/bpf/testing_helpers.h @@ -59,5 +59,6 @@ struct bpf_insn; int get_xlated_program(int fd_prog, struct bpf_insn **buf, __u32 *cnt); int testing_prog_flags(void); bool is_jit_enabled(void); +int stack_mprotect(void); =20 #endif /* __TESTING_HELPERS_H */ --=20 2.54.0 From nobody Mon Jun 8 04:26:15 2026 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 59B2D3E5A30 for ; Tue, 2 Jun 2026 13:03:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405439; cv=none; b=BrxZa8p7p0kshhMmQ/wozapTM7VbtKjbyFs5trsTXEku4GTO4Y0aLYxinKMTodxZXz4HWckdxU+Ymrzjtgc65t2/4/CnvzFN0iVCRsVMGQRDc5JRa/FBOeQWEVrPTLbi1vBKrAforsgmuHQsqObkgwAyps0Pd70JPdmSjCxr41U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780405439; c=relaxed/simple; bh=mKZfX+j1RnWBS8BtAxVShF9J7noeivYXX8VjI5ABuJY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MsiyTGVWKgdmtm8RR8bT5yNPAa/XIXdMaey6NMuBJU4Je+dd1JhcbgZSg/xaXybUsTrqItiXmQSEQc5w5MrZPRo/UOtTh/CWaA7tEp20RuavvabQIELeNyKikeyhFooaGf2n+SmZWG1DHSJtNvZUaSxEM/z40RJGmO9KvSmB/lc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=cHAp6zce; arc=none smtp.client-ip=209.85.208.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="cHAp6zce" Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-68bd167797dso5961535a12.0 for ; Tue, 02 Jun 2026 06:03:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780405436; x=1781010236; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=MOH7mEsh3HBCYOuvtZq+OMq1SM5+4hZbsWOCsOVaeQU=; b=cHAp6zce6bskWM1vGbaoSPjAngW9Y0dfxW0rYv79qN6kucv3S3PAADtl9EPVQNz57P +e5mdymZO3T4UAmSTt4us01IkK2VKD77jxqOsD/+9hg/lAxTLhZ4DyO/XouoGZ+6K3ra Uf02SA0hv9GYycldcWfFBxukRbGI2GyxFiUkLzl8vpKs3+7j5qIZ5nNsBzdezWSSiKTs EMr29lmpmTsidg6/+d6VAI9oSgthfHANIjsLT9nXQ5UUdUG8pxPANudkvEEr/57NljOz rsuJYScx64oKUUK14sZEZ4R5BF/INGGjWm4jJ6ffVH5tQu/GnG3wNd3GCsWIJzGLq04s fq3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780405436; x=1781010236; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MOH7mEsh3HBCYOuvtZq+OMq1SM5+4hZbsWOCsOVaeQU=; b=bAIjzAL905qh8m1ETPO80EFgQ/hn/c/SQSrLbdOECpt4LnCJWfdWn0/6T7JbmX6f+b H/l3nhhN0NW+zkG0+Rj0qDldlUTX96XrADWbnnDNu3SR87NwxodFdi0BudzNyRTTRZVq 6ZbMFUqrV94Iuxpb3zGtxF/+1YkIeGdytiFrT6loSwBhlNGTeZ98LF9LlpTiGX0lJJ8y D/EIDEwLhC6Lyk9bRmjLVD7pjbetezJLlRyIU9+NGKQ0bUmQDBLU7H/s2nESaeRaJiAT eyC9h2M+AKrDBtTVjxg7loqZZ/W1SoU5OilmqojWUdO1/AAcHJacf6UOjXPoiWG5J2Fi W5cQ== X-Forwarded-Encrypted: i=1; AFNElJ82Kl5S69DcyBbh/VQU9aHupJw4Q76rAEPH7tluExJJiFhVHEamBfSzw8H+Voy4Ov+EBPoTXfWOTmGEwJs=@vger.kernel.org X-Gm-Message-State: AOJu0YxCMYu7Su3hXttxCjzdzgi0NzrueJYPmEoIIfE7cKzPWj2ZPgyG 1pwmt5z/0Xhy2+/lP8swgUSmZYOW3chMjGD9WG/OtM52OkggErbJnuKJFuqg7uIYpi0= X-Gm-Gg: Acq92OEhyO2KwKMpJKI5d5dK1+BJ/GV3tZRiuXecWnOOCMQE3B0LbAN/pjsBHWn3Rzl kFIboI+qBwYLlRwK58nZcOPPb6cxH28CucvCfY9qkGs9P9eRJHoFBzJ67cUELOXbSKsRgEd1zKW /hm9OwuMA/kb6XqaxX1L1jvURIQTGGeyc9BQRqmS0xRMjFDL++Gs8Ff8V4BlajQQcJRSPJCfeMy UTjLfq/aDUsE5Psv5HGzPSo1Ik3AGVI4S7Otygq2oV9MjJ6eBPDIfFeVtneDwxFCgAvdPCJ2/6Y dXiLhl8XYzx9jk03m12pcmii2iFnXsIFjmql/fEPJjc0cNBbuv1Z600Zr5ABT0ltBGUFhtAGk1A owjlKCmBg5la24jkyLcXY76GpqjIonpk2Hhd151WBI74qEEYgR2+YVPmsleGpSbsqJvkO4RkT7I C2pqD0XAj/1/E+gLLRZ1KVoQ== X-Received: by 2002:a17:907:970a:b0:beb:c3a7:9cd with SMTP id a640c23a62f3a-bebc3a70a4fmr770255666b.8.1780405435805; Tue, 02 Jun 2026 06:03:55 -0700 (PDT) Received: from localhost ([2804:7f0:b765:e15:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bed25666221sm264314866b.29.2026.06.02.06.03.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:03:55 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 02 Jun 2026 10:03:00 -0300 Subject: [PATCH bpf-next RESEND v12 11/11] selftests/bpf: Tolerate missing files during install Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260602-selftests-bpf_misconfig-v12-11-27f898b3ba26@suse.com> References: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> In-Reply-To: <20260602-selftests-bpf_misconfig-v12-0-27f898b3ba26@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1780405395; l=2156; i=rbm@suse.com; h=from:subject:message-id; bh=mKZfX+j1RnWBS8BtAxVShF9J7noeivYXX8VjI5ABuJY=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QKXuExXIll6hlcO2yxcYh0XbMjwS1dF6WLug0UL1JK/caPPPoTV6qpSwC6lK+5A0Amw2buD2QyI 1PSwau3c0eAs= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g With partial builds, some TEST_GEN_FILES entries can be absent at install time. rsync treats missing source arguments as fatal and aborts kselftest installation. Override INSTALL_SINGLE_RULE in selftests/bpf to use --ignore-missing-args, while keeping the existing bpf-specific INSTALL_RULE extension logic. Also add --ignore-missing-args to the TEST_INST_SUBDIRS rsync loop so that subdirectories with no .bpf.o files (e.g. when a test runner flavor was skipped) do not abort installation. Note that the INSTALL_SINGLE_RULE override applies globally to all file categories including static source files (TEST_PROGS, TEST_FILES). These are version-controlled and should always be present, so the practical risk is negligible. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 4eebc15670e3..42d9cf848b25 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -1029,12 +1029,23 @@ EXTRA_CLEAN :=3D $(SCRATCH_DIR) $(HOST_SCRATCH_DIR)= \ # Delete partially updated (corrupted) files on error .DELETE_ON_ERROR: =20 +# When permissive, tell rsync to ignore missing source arguments so that +# partial builds do not abort installation. +ifneq ($(PERMISSIVE),) +override define INSTALL_SINGLE_RULE + $(if $(INSTALL_LIST),@mkdir -p $(INSTALL_PATH)) + $(if $(INSTALL_LIST),rsync -a --copy-unsafe-links --ignore-missing-args $= (INSTALL_LIST) $(INSTALL_PATH)/) +endef +endif + DEFAULT_INSTALL_RULE :=3D $(INSTALL_RULE) override define INSTALL_RULE $(DEFAULT_INSTALL_RULE) - @for DIR in $(TEST_INST_SUBDIRS); do \ - mkdir -p $(INSTALL_PATH)/$$DIR; \ - rsync -a $(OUTPUT)/$$DIR/*.bpf.o $(INSTALL_PATH)/$$DIR;\ + @for DIR in $(TEST_INST_SUBDIRS); do \ + mkdir -p $(INSTALL_PATH)/$$DIR; \ + rsync -a $(if $(PERMISSIVE),--ignore-missing-args) \ + $(OUTPUT)/$$DIR/*.bpf.o \ + $(INSTALL_PATH)/$$DIR; \ done endef =20 --=20 2.54.0