From nobody Tue Jun 16 19:37:17 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (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 3DFA7355057 for ; Wed, 29 Apr 2026 14:34:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473247; cv=none; b=Ww7MEzhnZm0E4IrmTAmNw7tK57eeIkk/+yEqRTN1nwBeNRAN0+DLvIDspgPwgmVG6TPRqrn0pbVYBzp9P6KPa2ssXnD4+M7g8fK9gSYBKTKLjKg+7DiSLSRv8wivKB3Od7glVHnjUg7Ul+J5h/dp15andVgKieNY6tgGlKVUaTM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473247; c=relaxed/simple; bh=/jGlD16wwf+LKViAk9+60yGEYsvt20pYf1s5W49VBcc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=P+JAIM8PeuHNLR15I32+Dn0Lji8FQYV9JUSM1gYkrpZcanBA76A/qWwPzKB8EZIYJVvEcV3gGrWevr+6mDwuhD3MK0c85siuU57tRjW56P0uykog5bOxApmFNO5OgFWYKoRq/gd5+Z6GGQjKwljqo5sL7jdcN251TBiO+WWMXqY= 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=BmS4Jyh9; arc=none smtp.client-ip=209.85.128.50 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="BmS4Jyh9" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4891d7164ddso65967635e9.3 for ; Wed, 29 Apr 2026 07:34:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473244; x=1778078044; 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=K+aXTQmh1BdIEplotgCd37rKzWea3sfpPCHgEBxHTL4=; b=BmS4Jyh9E0EmReORmI4X6oesHJskUJHEthMkSVrMaFbfMUrYkLfYKyYjFkxGZnxEP/ eJQClibtcSTNwfa/PqAANs2ZTBp+InqFB84BxqfT/5/CMj4w4w2NJ/yw6ugLoM7p//Tq /xNYgZSzdpd9O2eDJcSUKZUjuFGDyZ6r994gCSqjI84owtCXgEWCSoc8TJldwByRksIR MDq4aiyZsrsOcuY1JWwL9ZEPsFuvxPw7KYWuI/eDpv6ZsHS3P45qPfNFTP9JfcLE2qvZ g6ZO+0uXy422sJ8NpPy4MmqmRiizjLMTDQrVIeg8HnS3uOqXYKnabrHCW35r1BC2/jbx G3Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473244; x=1778078044; 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=K+aXTQmh1BdIEplotgCd37rKzWea3sfpPCHgEBxHTL4=; b=iTIZjKnZbF6xSf139yAn9wHFYtgfDrX3D1pzAJGSi/Ixnya+I7jcSnbGdbPAdNAo1e 56AC0VXqwplGi5Jfd9VMWdn5YNOkOylcN/ZSjr+A/tM67G6jqxt+agzHvikH+8MSSMZN gFy435wgBgn939QbcOZMUP0C/yxTXa/8JK+hs0dRAbLoA/sc80Ym8zURnl6QUsSzn2Vm /p8nTG7biU2mopgfB7G/qDUP3JgH5UXqjNTJRHZ5LvcSqRLwQOJH/adLqwMA8sqDspdF CjhFiTlXf4EHnAGFNrBJSqKEX26OiXqwyi2Zh26ecoKNrXk52sMFXH5kl6ZW/4Y0Oob7 MUEQ== X-Forwarded-Encrypted: i=1; AFNElJ8BD6MN7jpq4BZxN3v44gGbC+5ZdRTbV3JQJTdZPTM+TzykG3Ggrq+N3D9sO/tqMXv+7ztiitVGh/K1EAI=@vger.kernel.org X-Gm-Message-State: AOJu0YyP8HjbOmInZzd2gAH5KQBiDtX5sT9OzK42sELegS1La+rnBXXW MGieDEBDCFkXuPhyutuKOLaD3kHa0jUMyJIdElAcReTFSZBs7sf3iW7lk5aePVnO0nLrlUW0oM4 jrKtBsHU= X-Gm-Gg: AeBDieu42Iuoo544J9SuX5cE8ZyX+lB1Cn8iloaxgDabJzPi1At08iXl5ykyCYhS9rq 6Ez7IvB1oZ+mL5v+kdVdnUqUpO9vgWyrzO8tTq1ZN59+vuawL4U/0HR/u9e+NRa7mHKFuA5Agbi z6vXbtarnsI/o8j/Fi21XAGUpsVB6x8jaRHLsTodrnMTGrHtCPHyCe3yKxa0ztN0ht2q4w9Tzpy nea0dvXEYLj3JMl4W2WcgVrCXhcEvCok1mrHcdg4pYffKcFDjchUl4ToMtyCOLldHtQEoYOS1CF 0J+nRaAweBGCP+BxvUNUeDUeRs7hByVZi4YzuHrreC94OkPy0MmaJiFXUeoZACuOZ008Birs8tH Q9Qst7tDd0/wsJlDljzIdYGQor8RpRuPk4RgzIKvP++vqQ4TuSVqjWrXiLGLFJC84Po3MVWF4lu gqOAGTJU3TIyoXx0xpUEDBLibT X-Received: by 2002:a05:600c:4e47:b0:48a:5574:3a5d with SMTP id 5b1f17b1804b1-48a7b51afc3mr73608905e9.7.1777473244392; Wed, 29 Apr 2026 07:34:04 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6dfa5b4sm1169873e0c.16.2026.04.29.07.34.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:03 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:43 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-1-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=1573; i=rbm@suse.com; h=from:subject:message-id; bh=/jGlD16wwf+LKViAk9+60yGEYsvt20pYf1s5W49VBcc=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QEGDVsC8EGeTXG071G4XgQef138ami7i7vTJ1mqjJaT6WCeOJy5D2FjPUcqICYhbPBNduoybfNX mgv+KrqPWOA4= 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 97ee61f2ade5..6094fe99b5f6 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 Tue Jun 16 19:37:17 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 C5C5F19D093 for ; Wed, 29 Apr 2026 14:34:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473251; cv=none; b=pnMty8Et5GlgsBxp+s6SEIKVCkJHRpTsqLuPrvhg4qEl3Q0i4kNk9pAoZTWGYH9+XNlnBF+JOLTp2e8dMd6Egxvm7jHddw/UT8PnVIRRZn818ZK4Kwow1kGedN8Al7P+Blzoss9E9atVhYK6twXuytmbBI3tGVUhAXrl67aNDWs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473251; c=relaxed/simple; bh=0QJYdccmCS5Xa21Yb/0zhA86xvgSH0oN6kSd6sMETRU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uDZwTjTOsY8TihvS8+p7ZmiQHlOGJso2S2eX0nJQyfMqjvISSJpZ5ahI7IN437+xRyuKsO54npqvKOC/MKhe9u+uN1ECxXPO3r/jhyzfKwtsVXhdbYwhbyvdBijgyojUnvh2PyTTk+dG1bkhFU64fQwyZ/a5HzAG/maXbTMX1bs= 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=Qnt93c5M; arc=none smtp.client-ip=209.85.128.47 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="Qnt93c5M" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-488ba840146so113256575e9.1 for ; Wed, 29 Apr 2026 07:34:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473248; x=1778078048; 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=Gd4Mjpp2AlESfBnJvdKqbI6D/125UdC7Iwt7tAYiysY=; b=Qnt93c5Mu1IVRnvYfKMfwcH6QrxTlRyvISXmaNbbG+hdEpTloX0Z6Cwn4Hcxit5Sze A9gDLjDGoCjdKBkPEiV8aHJHY3CAPEBVU3my+wBjqrQqwBjAlJWPQYB/GiQXM2uNWLNE KzO50C9UUOlIxRFUBwVX/Yt1+hYfNHnFtF2s8r1U1nWsAevsdC1jIn1sAmS6pDmAIco9 G7fcpEoP2u2zq/xMR94+ytnvF6GRIBzB5yACRPymmXa8+xdEwT8mzcBaT65mcyEgGC9k 9EKldKj87S5H8Xco3PmqbAbppriZ6nwoyimnCsLHxezaLhZYJsS9MH9TF/lJn85N4+/F Zuhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473248; x=1778078048; 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=Gd4Mjpp2AlESfBnJvdKqbI6D/125UdC7Iwt7tAYiysY=; b=MfAkF6OO6k/cQilnInXC7V37zxE9hsqZiu3OE7xIfIyX3x+1bMSX0pnMemArWZzUgN VU4Ey/OLZwLW438av7K/RTVCEdMC2WX4GkOcOU84lVGGuOmYDOqL/6ik+pCpeG8Ds+2h 9KuLpRvBoh+lNLlc87pz8YXAjcQfgriL+zSn8jPDEObegiQ4OD3RSEmDDVBPf74hD3ql eoQY1G6nNtbNlVWCSF/0mty92r6IRYxeAzAag/JxIqdPIERU/1m/JDPkidIp3MtY3JWa Vwds5MNO+c0VHXLJK1YfV+8RLNOtBfw7nkOtUvoOAsJC7/w/O2jfsWWrTJcJbGF8DwRS u0zw== X-Forwarded-Encrypted: i=1; AFNElJ/KcHvJfJhHknbaF9WIVu/5cCbktyVmuStlICuBfG/WJeedyfeRS9wu2UWanI6pybbB5cGNGElDdoDO33s=@vger.kernel.org X-Gm-Message-State: AOJu0YykkDWbGsfsVlVgDVNxYscSLpNjqr/y5Erfn5rcBOQ7coWl5MMX KOB1adHSJAe0lolvTWiFwqytwcqTh8kyHZOIlhNe7VDio8xdAsVJImaEIXJL4Jf6gbmeVmu9K1g GcA7Cs7g= X-Gm-Gg: AeBDieuqiURtsH8Bq/eNOIFAxSjuWY/MYoBwvPOhUDlPYrK7HGP616dwBldCKUrxPO1 pZr+BLJeWS072xyFGf1b5fVXm52Qc9VAciXnWkM8ysjycvXt5p5IXepBW5G8Knnu71hhoouGiiF E1b5fTc8YfmUCKY7jbefIg4NES3KUDgE8Ds7cxq/CNdK5mhlNQfpwMTFxu+MSWaxMvzWcVhSVmx pYnam+Szr+cuDU/Sd7YXilrASLyZ5oMkYrl/wNAdxRI5FcepUC1UyX0/CPpUaFE7fEYaliVF8pC rc26EulHiZlne56M7BVaiyieFZ7VwJ0IZbCTkz/wVIoSmL55nnx/mSarNzpX3KQedIX5FavQqs8 Nw+2nXJMmmoK/Djpu24EnAe2+NiehDt/Rc1y4SHQ5CerTBHDf2/fihAUWzGFteE+r0A0p1CJ0/V V++DSquSHJYqoUIWFrFCiN5pjt X-Received: by 2002:a05:600c:609a:b0:48a:54a6:b29f with SMTP id 5b1f17b1804b1-48a77b1da9dmr122150555e9.17.1777473247860; Wed, 29 Apr 2026 07:34:07 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-95cb75c4030sm1101951241.4.2026.04.29.07.34.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:06 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:44 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-2-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=5932; i=rbm@suse.com; h=from:subject:message-id; bh=0QJYdccmCS5Xa21Yb/0zhA86xvgSH0oN6kSd6sMETRU=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QIIXqPwZ6ExpslMPO1MR43Ruy2Jbcu3QNC05NyM6eOf1W2txNKHJeNFUtuamW+QsExFZX1vF5ys Il9RpPp6txwM= 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 6094fe99b5f6..cc6ee7a2df93 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 Tue Jun 16 19:37:17 2026 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.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 4777D3750D7 for ; Wed, 29 Apr 2026 14:34:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473257; cv=none; b=ly8rhgLwh3JPIzKnfbK93yo8x54RoH7slJjD0XF3zLrczhb4uI+AB7enXStf3dOqjoCZJatM4vjEldvqSu5OQ+HaHNlFAazClHNokuvwEdWW0aK6bbEStqGr1CY53a3q26V5dsbqvboiwltJMGNVMV9UfxM1ORbPLKzdB66GfoI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473257; c=relaxed/simple; bh=Z9QzhMA/nmBpTOn+59uKlh4SuEqVq1B7WEVOVvaB7s8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HGDS6IpIFlEhp/VN7FDVeAeEXDgO5fGQOfRxeirXxpwr6GTo+E4UTwZCrAk2So8/BlVve37g5i67zQEN2VeU/peeD6dH4cmQ6ZBE+aKCUBvwRKLvS/Mctif0CC0DlVCHPMevnHPR5BpyjPnRn/ionAwZGPF7KFoek0ADENd5GKU= 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=aFmn/HkL; arc=none smtp.client-ip=209.85.208.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="aFmn/HkL" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-678e678970fso7234226a12.2 for ; Wed, 29 Apr 2026 07:34:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473253; x=1778078053; 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=QiNt5zgA+hxs+nRe0WbTX3KCmUAfHAiSaAWZgK9AmrE=; b=aFmn/HkLKKs6WcpAsFVkevBejxb+b3NLg3QqP7FCLs/q6RaLyrFQZ3ET7JZFdixVEK StexGYfNyYrmq2p8qTlA9F6YYHjVf10SZJe6VLc7XLz0d0cUDBTs8pjLVYqd0Px7GOBY 8BMsnDQthmyg+LZqB4WigXbTk1GXSYuX2OweKdk0mJSNQEyj+hkDvOOvRfH8BEXssc/K 0HizSD5WvG+YHmOAfYD9h+crv718mNYDDA2e3N9n3/iOQsz5pucp3nwmT8ZqiBX0jEqa Mgq5uQ+F4gejRiB58uKwWpwR6KioFs/HbqTgXAIaxVtXJJyObKg2rh3Pl6zRcWe6651Y lH2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473253; x=1778078053; 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=QiNt5zgA+hxs+nRe0WbTX3KCmUAfHAiSaAWZgK9AmrE=; b=Xg1pX4etLyCi2snCo/XmgIvYJxNvl7mEj8lrGVSFjOXomuYak75HmbukRHif+vbmd3 B+bbFNi3+6cBqnYo5Fd3HqOnP8XYICU3uVdtTqCKKE20TVkofz9rywI0pXa7HL+yQp7H MUNgu1wKDbOI8Mi1jLQ6IF1bgqOt52b4UIMBxhaWjJoT6XZt1dnGInS7pfhQFd6PB2CK fVrFetfXJZDruzMcVYLXtbrFHwtgazpf68JWV3KGGj46MGYTxR7pKnwpYw8GRY9UmZ/m /mK/Pl75c2fEi9+9mvjKLEK0dVu4/YVXpmzwrgxy/HdMDL3csEhfR4y8XzXFVENbiTfv /mHg== X-Forwarded-Encrypted: i=1; AFNElJ89HPErTijZ/yqcwvhKY/1i7CchE4nrP3NaHaGaf1Ko8Y4PYalysbh9rHqQpjDJNoH3URk1tBn5wWCdmUo=@vger.kernel.org X-Gm-Message-State: AOJu0Yx276WygbwSzxULiq/IxUbdSvT6RxFZFDTuAT2ttL2SJr2oASmi KYKu7rPJ66CEXT+gqer7M0q74Nu679n0p9shfqHF14yNdhA/HCp1S1gT3g4Pp7iibpbV0L8hoGZ YPI1lrAU= X-Gm-Gg: AeBDievaJ0D2lW3X+FQYfyeXpwhtbeSn2Ndi5gMOM2aYPECFF6eSW0CM0NYxt8pLyI3 6OFJzjcX368rgE7GzH17yIM2txTXB1vV47ji3ST5lMQe2+H8T9F/dK8sSdtzW73vQ0C9eEPCF8Z 0IFCWRP1k9mY3jxjGpu3vyqufn+BThZFhvEr5hNRjGd5E7/7BkfJbhhEDK/MhAk9EwVr5cDXZpp uohtjylSMVy4tsqEGZaVozkAsMwSQBonFbF83bO4+40dGLt8E2qtL47xmTvrM4iqKaCZR5nSFTm M1A7qRi3j0L953ZNlInwhpfA0LoIQSLOfsXRTY/AeISo4UZ+6RuW0qSm94BRVmkkCrhTP+6fJSg 9cSwfLhfIbdPtIVTiAoH7uvKeVk/YW6dewjOumxQZ5WyH0P5i5Z1WzYDU8bhuliqw0jApGQAX0m cNWUbR7MQzx9NtNs1KSqSnMKw504AZeFawJDg= X-Received: by 2002:a17:907:c50e:b0:b97:c719:14d4 with SMTP id a640c23a62f3a-bb93e64c44dmr268704266b.29.1777473253221; Wed, 29 Apr 2026 07:34:13 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6e2aad6sm1209590e0c.18.2026.04.29.07.34.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:10 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:45 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-3-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=9623; i=rbm@suse.com; h=from:subject:message-id; bh=Z9QzhMA/nmBpTOn+59uKlh4SuEqVq1B7WEVOVvaB7s8=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QNLRC0j6ApUGW4XGYm/kqQE8jTMU/5eFohNClfASfOZsKiZP35gl3KkixXw44Kw8FH1A4VKuB8R XRubThyZd+Qs= 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 cc6ee7a2df93..b104c687dcf0 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 Tue Jun 16 19:37:17 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.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 8C1D1366575 for ; Wed, 29 Apr 2026 14:34:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473261; cv=none; b=JY5rnKDex7+0iIxR8paZedOKWSR4DEU2gjOoV5tMKeu6hcj9oIYe5zG6YFDW67HMAw8ePxEgbwh1t9bHJspcrNHUqvX0bDUFVY6PmIvP5T8alDX6QouftzSHVHLEXrjGFKeGpWv7PBn9gF9ed0N8RNIIXmB7VkeYMLazPBY/WM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473261; c=relaxed/simple; bh=pbpwT1aTnlvs/k4VWEJw+b4cingvftFSwGWkwuBMoWA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O5X55UvVDIXYvBJvDqgcpTD78i89pgWnParP+L20+h4ths7kZyqzy9fwFJ5J/6sdNXRX+dfzFosRF3ATsggtdJvSRUKq4ZjYdJS8/Z0603dQBFnUOq0V/3c36sjosTlWPI9T3OE3JKPVIgfig/hP1ksFxx6mmOd+UhBE62lml7A= 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=bCJHhO7z; arc=none smtp.client-ip=209.85.128.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="bCJHhO7z" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-488ad135063so116167775e9.0 for ; Wed, 29 Apr 2026 07:34:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473258; x=1778078058; 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=FfRfeM2Ktoz2YBd+nAbVoRoGagqa4SBjA60nTAl7vkM=; b=bCJHhO7z+SALJdpUx209jEJe2jqByLm5RqdxN/5RjPzxBlKP32nyLmQzCairVAJKq7 EyQbEwOGqORbSfQdghEXKHPWqMSYG+mJ+yv397bDRB20l1iXTliuD1FmELwJtLmu6WsF ModyBBfJbpMb5EqcMwtkRBZfQQdMZx1DhccpChIBamYC/OzGDekCJ8TD0ntwYvwEzy49 FrHbTbiJyNaZlSHVOl0XIzuBnrMNeKp5F+xLgQp3mNxYP3pcND22yH+Olc72jE6H3C0e q/FS5OTfKH1fg++SYzav4ENPo6byD+iCZ3JmZnI0R5fjtm9jrcMCpFCSRbKptsuvEgHH /bfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473258; x=1778078058; 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=FfRfeM2Ktoz2YBd+nAbVoRoGagqa4SBjA60nTAl7vkM=; b=aAoe7s0FaLTgebkqliIUvavkkHkA/N3rqCJIfHFGCwhKdNx9qu9ARY+4wlY4FZxd8C 2UJR/9E/zCwN1iQyB+aELIZzcnM1zRQVoVk9YDAiZa886o8m3fTxo+YvZpoM8QNSBxQi pof7eAmYQv/hQMW2jJ7a60mJuB/MuYkjBbbtAM8CBZ8XxbjvVRIu67Qdhyef2vZU9q63 y3QKzSprh/WOaht6Hw01pRuV8G07Apfqo7Nf+PX+QDfu1iFlv18tmIwiUP/vViHd3kZo FgkgauDlSIuoar+FUfE2KAbRRF8JS46P0n9JrVu3OATLr9HIMQFhOFl4CeH8AEDjnwP1 QATw== X-Forwarded-Encrypted: i=1; AFNElJ+S1LDpTr1UQzp8ZvDupdpNyYEqfduD3uyJJZ0Zdp5vIYFujKmJKruimpxQ8Mpggb1Mc+pqot+NVJ2n6Hw=@vger.kernel.org X-Gm-Message-State: AOJu0Yy64pXe+dBlzsijXoUgkT8Y25ikjCKVbDFRlSsTeR3oIcmpriFk C0g+uPNHVteBeXvrOiR9HSht6tOqYpo8YZImfYlc5SwC+ltWVEVTwImK644dvJVTtt7SVc7mBK1 gxoPBURI= X-Gm-Gg: AeBDieuGGRcdenTxGdN9KFA6+tiDFthD2q7v6m5Sflh+yOMpRGXjg2n6bnTiaZmCHex 2Lb8aY0IejP6LZymRcZBNk6FfA+bDgI3pl/BzmYDXWxHQhLemeDELufk8xWusUFLRqUTMGMI56B ShCMQdP0RoZA+HcQPxWJnTD2ipxHuLcd3iUZo7P2oMpWM0nOgg9/SrOXKnQIIdfLdLgoGTAyeuy SAaBI1spqMBFebwY6kzowYQXif32g6HFJwwKbC//QOdAR41B9imSBCM+fyW8qt7jWSxYijX31zD 2dF5fYtKUw0O3EMM4EoYWNrz1iZg1xaQifb08o5V0B/pYCJ0Ke/sOYjW/og0YksVBCjZlCYsepP TNFYDLntjrhS0vS3uvHO2Zt9zT2z4hM8AhdsPhbdNVZlMlu1CivswgKlLkvXt9dmyQ3GOMT8yw/ 9mFzFtTCNPex1bP6h7ypFR3htgHc52x5N145E= X-Received: by 2002:a05:600c:4e91:b0:487:59c:2bb8 with SMTP id 5b1f17b1804b1-48a7b54bf85mr71682935e9.27.1777473257522; Wed, 29 Apr 2026 07:34:17 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-95cb7831df4sm1071527241.12.2026.04.29.07.34.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:16 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:46 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-4-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=1555; i=rbm@suse.com; h=from:subject:message-id; bh=pbpwT1aTnlvs/k4VWEJw+b4cingvftFSwGWkwuBMoWA=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QOx6r1sN+pHaompviJvGnsc7htEYgbZYrQe0hCIZL1j9hp1PNBETKr1kJS4dG0hJni6LhDBotXn AqgE2bAczzAc= 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 b104c687dcf0..9a4d8bea0c18 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 Tue Jun 16 19:37:17 2026 Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) (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 CD75437648D for ; Wed, 29 Apr 2026 14:34:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473264; cv=none; b=dhfRpgsqgPDoG2vvxC++bkEixAEUwISdFSe05icjWzaivN4hMnJQ4YA9ysDOoMFqrXc6p9ysJB13bB3lziI5B5vhK3zNTzRmbTDLHx7n+BSn3qp/WmU0CFX8RRWPtqwiNfsFbBMTJMg/DTNf5qcktdmh8bgiYz/wnyHH6jNngUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473264; c=relaxed/simple; bh=aqXG984YlUxMtsZ+i7vquyVJaGX8IceA6DEnTDh+TX4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZilPFhaGyvWd26zfjdMRm07odU/HTuPEC9LoCvNF4tzlmMd3fGj9z9w9xQNZ+XGTGdnji1Jo6sXTmPyWg3TsJT3mMUGyVNwfEmzgK2nK6XEgwuhJyWPVasq/EG6lfvCoqTN2ghVF27rEezflGC1m0yFq0I3OiZb4MQSwoozhPW8= 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=Q2T3FS+p; arc=none smtp.client-ip=209.85.208.52 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="Q2T3FS+p" Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-6746d0b2b4aso16674704a12.3 for ; Wed, 29 Apr 2026 07:34:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473261; x=1778078061; 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=ysP9AGtPxCAbfR+Tj7mfuITrZ+N0ZILV2wyZ0Jzr9sk=; b=Q2T3FS+pNznYI2mAKhOMxhCmLzbjwKMg1tjPVGpb3tsUzCYxvefV9zEcqk48e8CLDr 56PbeUTFb8lpvHfSgWQOvrssDg0HJM9ogT3QS11oxs/CR29HpPltth6GVZmvbi6TSMM4 p4SbiHLiir/FdvwJgfwu6OBa2oGbzvV3YPhpo9NC6gXUUrIyCBZ566WWpLRo+E1tqiCY 9yXsZT9zDqeUq6QWRhu+hMP7GJ+/wvSemDNnQrAcUXHiO4lMTmkh0Z/BYqy49KUJIPw+ 6URLKbBPdtM7gvy5WWHFdWoDjVIxNMOQoDrDkCt11LXw9Ppu0loT859c3e/gsZ/lcSKm X+CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473261; x=1778078061; 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=ysP9AGtPxCAbfR+Tj7mfuITrZ+N0ZILV2wyZ0Jzr9sk=; b=llSw6Us9CjElJ3d7G5/zvXjgUMfFd2FJYN/u3JAtQs1tG+HJ47NZuJQ3QFDmS8S/jc dNsnF9jm3jO2Dito68uu7Pb6yyEBczmemGyLe0RzR/UvHmEzFZfg9mOsdY0i6d9vZSG2 QRCRhMmObEzINCGeXXor0Thdc+05p/s0EP/eZEnYs2FosvgUwpBM48bppZvpFdBRJZwE mxz9LsWHwMy7GgwQ3k/PHqwmHPDFbP6VoEyoksXGwvADNRzYQOAey2xzj0X0Vlp9kYST +jrK26pPLKOlgbUtYMQFOzNILr4CZX0ndfGC5/5Fq4FCTJVKzjSEcbG0IzdKVHImDyNu qM/Q== X-Forwarded-Encrypted: i=1; AFNElJ86NFptQ19vpk3qFhfns+Is/NQkZsb9HaLakwPEQopS40DMcoEHXeT5/4xWq2hSFmAg/fYqPQQG94f6Nvo=@vger.kernel.org X-Gm-Message-State: AOJu0YyhPBpeIjmpNmxJ/rVDB7ZLik2e6xIRmPYO1UB+sA6N8I8i7/hF ANZ+5+2X97MTaxsSaC4dLV5rcuBq7rNbRPPOnwkZjJtKF8dInFg5l1inYS4GVrBCWf8uiCVthjn 93yoY+x4= X-Gm-Gg: AeBDiesvz15fWBDu+txe5Oe2klfWPG/S8ZuHlpTVCsaoZJ8eDZf+6zAZOLZX2bVALrJ yp1Ybw/UKyrWuGACqskCgPyBM7TgGr54dJnuMwcyCVEo8+XWn6Bgg5NgjNARPDaUft84JFVTAPD 0ju/FR0qLFvtdAHaGUHprb3vx8w5PAFGFGmlwUNBGG+XvIIDTLprVDMcVv/88OBvzFLQuFr/TwP mEBWseTx6xHha8BtlMhIiZ8hwLsA7uh6tcTxE3qRdd+e3DjgNSlUXsJjmT8Rehqrvl21Mhkt8lp Y/FZ4T4kousrSoz7If7PKZDYRyMneC/kFbjC0XNl8cHb+vnSo5VAIEPRAen3Cdh2CqSgDYYkLi0 I6bzbcYkbdpE7poTVL/sjOm107FYfDfX40mZghtHijWed3ZYB+QZF0ErKU/KedP70uSwzzsq+Wv RN+7gW1i2+UMm2ruiFFA3+iOKl X-Received: by 2002:a17:907:c50e:b0:b97:c719:14d4 with SMTP id a640c23a62f3a-bb93e64c44dmr268755366b.29.1777473260782; Wed, 29 Apr 2026 07:34:20 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6d87e40sm1209035e0c.12.2026.04.29.07.34.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:19 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:47 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-5-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=2402; i=rbm@suse.com; h=from:subject:message-id; bh=aqXG984YlUxMtsZ+i7vquyVJaGX8IceA6DEnTDh+TX4=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QFgbYQ184IounnbSc2yS5rRTZVxJcGqh/hXS3g0Je6tNmN/jnaYCgSWS4Hbx4AaGX+s1ErFeyEs tZWsUuJcpdAo= 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 9a4d8bea0c18..608e6dff0392 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 Tue Jun 16 19:37:17 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 BF7CC371D04 for ; Wed, 29 Apr 2026 14:34:25 +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=1777473267; cv=none; b=OKj3NyzjROCOyrVuXlDOIcGAtjHcxc8y3H+b94+EBNuAWYv+68ssqNIctHMGZ4Bw29AHLUI+1dfw7p+IiEmy0F9Dov7C/rL6aa7WmmE2/4JPwL3eKNkogmNN3wz1fMXfvf+nrXcIYr3potTcbLJCxSNsu5GxpBDFsV1oy9RWHZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473267; c=relaxed/simple; bh=jhJGxFLXxkLJMjYYafkYMHZLmy3CdijahvtwkglC+SU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cQH3ePtp9bk5WlUNMCrccvNPA8dGuEtqcif1twLGgHN85HEQTXJ1H4jZpDkRbW0D7rK/P3UYSGw8qIMPLWcxcRYDLeoHajSDPvWmUcvJVxjz8ro5qRpqcLriRAQalzxxAtDYPZOgH7G7lifv9M/E32Uoi0J04vFUg5djlQICzaw= 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=M/aMJ75a; 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="M/aMJ75a" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-baebe98afa0so738941566b.3 for ; Wed, 29 Apr 2026 07:34:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473264; x=1778078064; 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=FT2xKlbvDdzA1YOF+HW6JVqGVpjLZaiDVQi7htx3o/c=; b=M/aMJ75aBDodtmzPRvyWzBDRLEix+SFRKmWVl2IuThAvoXoEyuL0DLRmFHKCefe6Kf 1on0CaVZY0XUB7N8KQSCcDhjUxxwQlJfAhSGI9cqrGJN3Mvd/RVzKQZMjs+GaCybLnW+ QDKaqk+Hv6Yr1Wqo096LkuQ/3reu1EpmasHeVUJAhAtZyBi+2md5h6dQ67pePc/xSFrG /IPiZKxQHf9sP5IeTNi8h2g1MaklnM9A8Z5c59QW9oZQgknwyvaZTeVC6TRfKCtBMPd9 8JY8QIYtoTsEFnqHPI32AkFX2Qe3wVGz8xb9vVuhdSGFpEomnoLtR9bmQpO5gPwHUVvl Tjcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473264; x=1778078064; 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=FT2xKlbvDdzA1YOF+HW6JVqGVpjLZaiDVQi7htx3o/c=; b=S7bbsG7F5JWhR9HVZunHijA7kX6d2zD/kvqKrn3VHXOvkpNwtKGk+GxqqoCUXjPI76 Y7X1rbITaTIIsrTZy2jwmC/DIKQZj4MxAInc/8edYXz+Rily1R7ikDXU7Le2KbG7OdgI Fhy1DXJ/dvzFp2r+4QX5xaZy20fe2PutqW7QEy0Isu3rUkomp63xRfIi1tkAocTLN4xQ +HF/EfY5xA9rXEJb41SryV8jF2ERLmQROWSkHjhy3juNrLT0qvqm/PoE0TLZ1piYwhvq QbHbhnFf/WmHibHXiJR7cWw7P8pC0xqfto+sLvZgH0F1LYm4J+tCGadoVtfPT2Eiqw7F PPHA== X-Forwarded-Encrypted: i=1; AFNElJ8dDOnG8w1Ldf2x4BAUaVQlWstEZ1twdWoGAWKB6H5yJIbIwzY7lis9M0JY8Blqppbeg/po2/R0KDdizHI=@vger.kernel.org X-Gm-Message-State: AOJu0YypSffhksSaDLFlOhUJfYREGYxuconf8v1y21c75fDRkUla7n3U bFmCPtdLU86qj3THpnnJmJxa11n7KzUStMKDOrT7HdpPQImQzKWxMp9RmoM/qqss+ZKJk7E0Q8y d5CtleTQ= X-Gm-Gg: AeBDieuoVdH1VwE82cd3sy199VIFsCT1dY/FSA9PvfjXTiyMxgapryM2yZH+KaspmKI FuPzKUvqhyEJEkBQYulqIVo7t985y4HigVukUmtvfXsXCFsVy7Zl+L9rRLNc+2UmAVdUqihhODs dU2JSMI+Y3vJKLJ1OqehPQeKb8R6rj3+oMlcw0S+6r0hz4WRw3qSTTb9sYtuW/H/ro3afvnRcIq jggF9/iUqejsPBVZHUGKd1hESRiJFYPAPZGxiOfdEGBQujPbN/25e4xaKXibbIcPvaNEoGnpA7N K/c9n2Vx/Uzw9DZufrdUdP8YfHldobQi6VuRYyHb5CLwDu3iO/2cZWUbnOUs8uStT99eI6brIbJ xb4yR8F4afNKGkXKYhg+Oj21IdSVUeaP4KRaqJ3wy1aGp4KDQiHBWV4kAjnRslPj5BPYnhUnSV3 P+slzRcAJd24Iyj47P0PErAwCJ X-Received: by 2002:a17:907:e152:b0:bb6:4c2f:92d1 with SMTP id a640c23a62f3a-bb93f138aebmr173310366b.40.1777473263728; Wed, 29 Apr 2026 07:34:23 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-629843365e9sm1145522137.7.2026.04.29.07.34.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:22 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:48 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-6-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=3956; i=rbm@suse.com; h=from:subject:message-id; bh=jhJGxFLXxkLJMjYYafkYMHZLmy3CdijahvtwkglC+SU=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QJxoiWVdJnlM4a8nqBXmAhZlgBt/AZtIgb0JaFVSwQNmUj+tSqtoWMa7bWoR5Hcl0OsAIERRbI5 hqTAjbjOH5gU= 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 $(V) so verbose mode does not double-print the line that the recipe shell already echoes. 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 608e6dff0392..9becc077eb23 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 $(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 Tue Jun 16 19:37:17 2026 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.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 D4D64351C06 for ; Wed, 29 Apr 2026 14:34:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473273; cv=none; b=ap49qmgBcI5DzxV/MJr7PEfKNciNqU8S8kH/oZVg6WrNcfPQvStrz2SqNX6TJbxoF2Oqm4m4qVm/2SgWVqzaaeeXGAk/aFGvpAx6z6QgJ5oconDVEDy73y6olvJJsbrW1jpjMFjSdT+n6A2ctrM/plMQx0eKGmP32Lf1AfIgXro= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473273; c=relaxed/simple; bh=M6OJfT3qSdP4lnrHz8anqee8kUQRnD0Hidbc1/0+8Oc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ftcQjTatDYPqaY6wNvFsTMIA6+87nDUQf+XufOJ/JwApC+dx4UG6/nrD/Ua05FkRfrKW0UaGc0ZdxSmXmqBB4A+37MR+YtDaeFeNV45v/TGnZyE1YRnZ7imGnfMCh6NnUlIYB71mu+QARS3AYPja2NY6c2uB98QggZ6M0FzF0ys= 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=PExDjz5I; arc=none smtp.client-ip=209.85.208.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="PExDjz5I" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-67929ff6dbfso6132304a12.2 for ; Wed, 29 Apr 2026 07:34:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473270; x=1778078070; 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=PExDjz5IHWMKwN14HhuO45VRpI1RnQ+Vd9jHPUQX8B2pR9w+x4UY4XyJpbF4kV4ah/ /97s82JCoEpd2zaDtdOZ60bf0+oLEUuJAycThE4S4F5ePQYTXcVXWwqYolDVidPLKw/K LEhgoR/xLvJH6W2uSY4Jzvd+pjM+aTty1vOQ05VCESn3Su/RNVW+C1vLGl2NccHLOX07 du1APwr2Rsy71Zql60M3myRSIXsotVYR7+PMZh5QxVZt+LtmqtZsnHfZh3HkPuixQ5eB bwS7z11GoU292J5sKUw5QyCDdlC1AZzdiU9VZkYLdqbRsN6riEEnmmM4gK4Spwj0Xffl frVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473270; x=1778078070; 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=OikKmnnkOzBwCPKowSfuvuau8H64BR+SdVFoosUOEHcT7mPnqIEHifIU69dzHiROcP 1Eh73/1gs1s8gBi+WRooSJFzJqfwUTjGmafYDwFKYoUKqsxwNYJtZMthIP2/jHZk7Luk XXGLiBf54jMx8JDWdmiDN2WbA6xASrvVIPG+ghhT2CW512QIMRRedQGH18TP93O262r2 lXbXgdOBrvlfyh9OaHvp02Tq4KXPmbtUFpLP/0to1q4syouu/t5QFxF2iBRyuDHNcHOt xxz5/Lttak63OiZZnifgiWBH0r+V05vjvk/BfE0dZ8uQxgeUmPeNoZ6EoaNa167CSH0b mrKg== X-Forwarded-Encrypted: i=1; AFNElJ93M/Q6AdB1+xRwXNZJgNS7FyWY4kRrGLsFxtkuvxey5VaR+IzNZ44Xo4as4maJcBzGtOCtcMdpCLsEt08=@vger.kernel.org X-Gm-Message-State: AOJu0YzK5GOY0uG+810ylAeegNFBKkEIT2SN9NFTKL66KpTk9ZtPE4uP 1cg6xn4JPs8wi5LG2ESy5os6m2ezSqcqqT0jO3GaLr3PE3dsmApWDG9lMnwqvGID+CoLktNWpTi KyLJjWEM= X-Gm-Gg: AeBDieuGxBNGdNf7K2yu0oX7zzhXRboZ5/nYYzY97lzo+tPvBtQjfWDex3NJfmqszwc hJ0KLOBxAOus6+hgbHxUDKmfq0oQoE+o6VdNb61m8NPpTchaRs7vsbyNebRLJ2vfmDOt1wBqCBC 4Caih8GI6Ibpbkq/RL9BY5kMyWtqfkGQkATVRvezmnCbOfgOZVyYvZ3WJPVihpgwx+DUEPF8a1o KY9UWhLsQwSWzI47bpw+c4BKK6KV6UVzsTJM6YSEfzXCU+rNzXRD063JBfLblP3kPXwRC07+cl2 D1W3+B4InCVCEfzDNu2c5GrOwpsi40Scr8LkT8vQZuz4UrFvme+qFyIMf2vbBQoAevPrCudDWK4 MyBUebsQMegNYfirMEtYiBqGAbHh2qyTtjU+6RzUOXHTs/OFf0RoTMF93jyaqYFzw/zpv9BLnc/ zB5t96CpoOH2mUyZllIrFnTnkX X-Received: by 2002:a17:907:9701:b0:bad:255d:b5bc with SMTP id a640c23a62f3a-bb93f043414mr278783066b.39.1777473269401; Wed, 29 Apr 2026 07:34:29 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6bbace7sm1224753e0c.5.2026.04.29.07.34.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:27 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:49 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-7-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=5462; i=rbm@suse.com; h=from:subject:message-id; bh=M6OJfT3qSdP4lnrHz8anqee8kUQRnD0Hidbc1/0+8Oc=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QJNnE97hOQ+N95HrIA2/vHwDFhUMZUH7iK6o7CJ+zYWQVnNg6dyS1G3xNuzwfOMM+lTuduNkLV6 M3PODM02/lwI= 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 Tue Jun 16 19:37:17 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.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 C94B02C11CB for ; Wed, 29 Apr 2026 14:34:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473276; cv=none; b=BS6pANuUlW1rPHGBUxSLLWBYMvIq8Cq1MzYcvpbDcJzdcRQkukKUvwpzf+RJ9U6tQMuMeY5yAigYckoNz2bbbqFtMF87yUESs2vvFz2rZqxPY8NH74TtVBQVEHf3G0IK1gxJ2teKKvCSoRMOuiR0USTznL75uwuz5ZUaT+qrhLk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473276; c=relaxed/simple; bh=I2jxLztduWlfcb809/jc6vkR7pIiCKbFQIGItdln2/s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EV/uLbvGU8ea70TPUIDXFegobpj89C3rSkgA2e27RXkvQXe9nhXjN7SoQaTQBaEUx6r05CLKhb/QoZXZfQjJFX65RUccIiE65nZco08zPOa2/kcE8G5b9ck6Dy6mouN6uFRZFXDRswe3UZy0x26JtTKb7IW536oJTe+EOwlXjeo= 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=Ha17tGVy; arc=none smtp.client-ip=209.85.128.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="Ha17tGVy" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-488af96f6b2so167236815e9.0 for ; Wed, 29 Apr 2026 07:34:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473273; x=1778078073; 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=Q+XbIgjuLQuX1ZjiX/bxTtSVSE3u4tQE56sxmhIL67k=; b=Ha17tGVyXmvGhF6J/cUjAXgxCO7NUel6nWlneZ5ULVJg2s8a6TjQKwLoYzcynia09E fNsm4VIJkbX+OtrfMMUTguNlWOgGM30u12EZvll8SYgM3a73TldxYyXH1QUsFfMGBQBW Ij78QY0XUKIUiWXPZFBys/bn5P9ZDjIehKkVtfBF7Vd5oGlwBfSGkJ2k1Hn+4F5S/AHx Spt/4eK2sj4+is0swZfrP2HpAS/UDOQryt7VlmIiZal3+pXiaQM7g5zjxPQ/dWTycWgI iAUR2xClhK+hGCgkv8W8QnsO7OxnFhEQ6yeBAqOivVhO/5ISrmTmLonueOTe4JicJgZp +b+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473273; x=1778078073; 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=Q+XbIgjuLQuX1ZjiX/bxTtSVSE3u4tQE56sxmhIL67k=; b=X+r/UKR4WrK+ArQtcyRll2scIzdCsF+QDrgoZ1Mv+s2h6FZhIZRfssZlJJW2oOOn3P rmaxoRP7VWXmAFh0A+XiDWTrOrU1CS3XxSCjdLuTT+5NkDq72GxlhcoJJYKV4tTd55x3 P29R9GAYEWtrbh7I8QqyDYwA4CJ8Z6MDd9etVMYK9/m2nN8b/f6qFVTU+H4zDNBCadw7 cz9Xf2PrvEFIGx3E8QStc9zWiA1T97a5GEa+y/flUA60dsWzVGKfvBFkyO3FJEwbyINw 3RUEm5ex+ai2HEWxKlVSBL0btxTfldEfqoyDuprQuXh/LMqXw5Fr1YnBOTFQFdxV4Vfc WAuA== X-Forwarded-Encrypted: i=1; AFNElJ9mo61C6tcFX8S7r6R5Cne4IMSQntSVmsIpYFHYcmc5fesmxpXzA+BLkck6eRuT7GSJLNbOzKTBfV0D9dE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+HwSwBqv4tE1VdXw4b5tPPur6rbH94xDumFBBKBTqQL3yByEW 8UWQfg1LgEZv1s87AAC4d+txtF/GCNaauGbGZKmSZgMKUBdZuEqB8XRcoiVx/ogi39V3d3tIhlV DpH/opQ8= X-Gm-Gg: AeBDiesvTmxwUlGGClQzsjn8GFSkrFVYI6ikYfkhNavf6vej+Ysx5B6vtKIKhPQfpMZ t7z7BeDDytGtbbGTKd4wbKWFpjrNtOJ/Ii9v+1qCVv6KyIXv842zbAuXiFmDL0sXpUid5U9kfhw E4GmVr3igbt3p6Gf0omM6oy9A6HpYRs2Wu5Bf0uOgsvyVRnxjgrGDBjbjD5prOCSQlmsmwTXkdP vRV1Bia5gS77bw6c5N5lVgP2IGBizZRTJWIbdXESI1XljJs43VPpXrRN1/h9NNRXLEId8V2kJ72 5J4sUtfQ+kUCVeANjF1VRNJZiQPmUVfjgXNo4+ZmrJL8GLMr+0T914f+RapwSKiFeSzK++G4A98 ZObPUYmGfwEvqanF3Qs0GdU7rY41qAj09uxmN3GO+wAToy3btudrWDIzACWSULRmzTpmBxpdJrm YO0ILDdDPSeZ1F7hU1BGlSNweO X-Received: by 2002:a05:600c:3b0f:b0:489:1c32:210d with SMTP id 5b1f17b1804b1-48a77b0a507mr122496495e9.15.1777473273043; Wed, 29 Apr 2026 07:34:33 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6d87e40sm1209329e0c.12.2026.04.29.07.34.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:31 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:50 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-8-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=3578; i=rbm@suse.com; h=from:subject:message-id; bh=I2jxLztduWlfcb809/jc6vkR7pIiCKbFQIGItdln2/s=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QIzdYHk5cwif+RQ3mArgKXEe1OmNUYvqf/YJSAHl/MfszMfMQiXYeQnyGabY4+HfuNyh6OOx+ma C3x0RZ2Z08wM= 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 9becc077eb23..a64e822dc540 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 Tue Jun 16 19:37:17 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.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 EC4D2378824 for ; Wed, 29 Apr 2026 14:34:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473280; cv=none; b=XOnG+2kwhKukiy40ETH2fv8H5Q1N+1WjuISBL3MISb+mDEs6F7dgMdJfDWePs73bElOoa1imBgYjp1n4/QN0HkrxVsZJ+MbjIC2pPYzpl7NlLKXzwLUfcFj+blbgkCckJVUORRFuevEftPSmS68kChbKvnHs1tM+wlA0jaHf6Bo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473280; c=relaxed/simple; bh=/tFqTU8qCqbw1U9FnIiYVTRI8v+EYywy6kgC9ZG44pU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WMDSbK8ucM7l5BkPkV0wnoeBjzHwNl1G84hr9L4axHm5+qhuEggnFwS1BQCXBtWqxxIbqyVTA0Yap316BG0OVZANDlczvKZOFh9bpRWIbRUSc5n99v2g3yeFpcYJTOxX/ZlgggQPSn/EdU4vpfPmAWvoiGeiNEomPUkhcLetihg= 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=KCE8FWMv; arc=none smtp.client-ip=209.85.128.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="KCE8FWMv" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-483487335c2so125000665e9.2 for ; Wed, 29 Apr 2026 07:34:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473276; x=1778078076; 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=5w5DjNIWsG7anqLb8lN7r0B795MouNr1LYZRRhTV6gQ=; b=KCE8FWMvm8h0VCu8GA3sUqKglDzW+PkeHMjoGMkTVb3VXOporkoQvc6TMNZz3ph3D/ K2YMAFnI5XzNOlzJiOglPJbksXKOJis5YkTAZ8Sy426BqsxzHl1tE7dp5Kd3kH4FFaOP bSgzvUGz06zz+DN3Jf4w+s6YsN4gHiNg/DFyt35d9+wnZN9LpINnHwrJxgdv1HP/fidC pW8TOUrQWFNIuT8JjRFYwA4T5y0n1qzNvh2rNfz0fADmfuIe1FPiOV+1G5T6n8BFA3kB kw4TkIs0VhwRZz4U+EvZU+05U4Nac80tiWdDiMJVWyNr7Q4bhnqeBLTYvjPdZ8KFBb6q 5GWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473276; x=1778078076; 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=5w5DjNIWsG7anqLb8lN7r0B795MouNr1LYZRRhTV6gQ=; b=a575vut/40QfQwBCdtBH/Ju4EBEu0l09jd+6QtkFOgWIldU3oQ/iltmNiR9RoCY6Qv YobUwHHi6Y9qXFmzDn2Xe11l9/J/cK4pPVUOLdBcWtkMOEmm++ZYVx2AD4r4NKAD7VCs pIiCgjNlvIWK40DkG5OxULSnioao3O1O2gmWqWdD8eGXC3/JgRQgQLsI76E1ShRCJpAD zRYriWfPeZnIr5cCDmDkP4QW+ZzLosNCIMlQhlfUjCiXJas+1Mzi7SjRHrLosmKdcoPw IxpcEcde0MVbdu9C8lXKOR1jdgrhrgYn5mFXdJ+lMny0mcNL4wZNewOniCgh1M8SkzpN WpYw== X-Forwarded-Encrypted: i=1; AFNElJ8wv/kRyIIhsiyP4YSWBIQ7cdebbe5vXO+bR2lk2M2LazyTw7EW+X8CcO0fQJWKmhVS72qHOzpvffCsIRY=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7WiI40HwS0/WhH+iu8mgCSCkTj3oj74PYLkz+hyRpr2FknDpO mE3fxXSerytveJZwuCIF7MeLLxpopyCh5oGwZmrsI3YCPKYlKibxi1NSrS3uPeGNo1VAOiDvazA nKBPGMJ0= X-Gm-Gg: AeBDieve2N7+H0jA1puxf0rcwoogDLWfk+migv+EOwpvdla5RcjArQZove+EruIkeLS jj3opXZVRQdWhlaIN7pQG6g0K6anmqSjjOAkC+lfD3zcyCv0j7RClez+Z+8VM/6f9ZglIYA4zIE y5ySdRDfCpPVfartaLBhe0jTPzMGpVpS8yL/BL85dKWCXjeQPKxN0WthHiyevgEL7oWX6TYuE8H 1JN9y+ZuzrNV3EOXcHeyUo5Zh9p+zdFZci4kSOv2qenAJz6dGHjHBbuRYgwlynMTlpAg0psPL9m cY2f7Cw+d1uQJ54eJ/8pjUG5KV9vaP1FmvLvrCNg3I7OdQgrGaa0AWipNeEckKvBjv7MU+8cx7V NsWelDVBFRtURLcNrTdd3likVUHJTJIJAsnM8Nx/5DooWdNq+c791fqrSWBKVEl3zptOlsZ/eQ/ ul+1uI5DcZAUhPL9I6lV86j5x7 X-Received: by 2002:a05:600c:5299:b0:489:1d74:56d with SMTP id 5b1f17b1804b1-48a77b25324mr133662415e9.29.1777473276053; Wed, 29 Apr 2026 07:34:36 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-95cb717d119sm1099129241.0.2026.04.29.07.34.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:35 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:51 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-9-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=2217; i=rbm@suse.com; h=from:subject:message-id; bh=/tFqTU8qCqbw1U9FnIiYVTRI8v+EYywy6kgC9ZG44pU=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QGYVkomWwEQDvE7Wxp+afLciqIHnprO59BIW8nFs78OTE596z0JktPlMkzB3u0Bmymz9v5I618g V8+gHhjjGYw0= 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 a64e822dc540..db4ff951fc88 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 \ @@ -988,7 +989,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,$(if $(PERMISSIVE),$(wild= card $^),$^)) $(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 Tue Jun 16 19:37:17 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.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 2F9B1351C0D for ; Wed, 29 Apr 2026 14:34:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473282; cv=none; b=CR7IXtzFqrWgj2bxnEO6nN7s8/qNFYtZ7WJpXLcn6SvudZymHabKikYUeiml6FYp6Cj4rjy0ecMHQy8UU/mq02TdkA697n9kIQT9eZ2ulX+4KWoOkPPoEVQ0MvTpQyBTh2cJZy1d84W8TzQo1/tlEBS278egPxTzpzwx9thHl00= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473282; c=relaxed/simple; bh=P1kmeBBxz6oLlrcr3TGMtgJ39fvP2CkFwTpn0Vo40DI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fFD+bmjpmF0hqUkR3uEEweiJac5zmo8qvlv0Bu0WqAdWT2x1wy5YMV2FPqF/PKq7/g7Kfb19D+R6ecAChLU66N5Y31FLGEB4bQRSLrzhok9w1+8dP14RRLppOzbsL9982JJe352tUjTPkZjehVtiUUhOUG6WvhvqVR515AiD3W8= 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=XnJvhO5B; arc=none smtp.client-ip=209.85.128.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="XnJvhO5B" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4852a9c6309so114745855e9.0 for ; Wed, 29 Apr 2026 07:34:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473279; x=1778078079; 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=gzn0A233UxptBOFA9FIvgdlvl14jtwnlOOk9eQvvLMU=; b=XnJvhO5B1lUnINDyhfj9GqG0kU/o2NlQX0TfHJOHprZ2OZNuAKQJJ0pVJYwTlLk/Ge ILlexkEPCWxfA0lcGOtMXGqtIgMZ52OilawzJnMrZvk/3JM342QbVo9lifb2SPEG693Z Z36HkshPSLlvM8oymr+LeiusJGjt2WOzeo+Uhvesyr35JoHdBh2+hJyUzqK7UNorygx0 Jr7g7YwdiBr7CrlMef+sKGOMKjvM/2Q2CcoHbr9OZVMZpH+Jpe7EfaEC8leqNfW1ygPL Ovhth4+EMGkZ6lmAKgiUui8aE/7RIZzL2BMWxlUAChcE3qwzGxEWyyz15N2k3Rsd+7iu boAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473279; x=1778078079; 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=gzn0A233UxptBOFA9FIvgdlvl14jtwnlOOk9eQvvLMU=; b=IbGpRjakgWwlvti+UqVF8PMRNdfcSz2NZ9HG6E9U2lI4pH5swUA1nGS6+lEtlzgvk6 d5Dkc07aHAxlPaytbxEPJyvviba6pNlYhro9eTvNIhC/1jJYCuz40rT2Wh2QohgWW63y +PRMgJS7ChOSuhf7AGgjdrrh+TxegFBWUH4v1e5lNBNA3AI9ObOE1XYzKax7IqotwGtB tTUyMcMtDAspBcdLtRdHJVfoZ3vUaYMkixxa9Ub1AP2TTffVl5lSDEKH1CG/3gY2pf+q N1Qi2hhg+3hDcmKyxDMZTD8TgyqGE90Q+p5tzQ0SVtbNvR6IFtVg6j8p/PyCR8hKqH6H CAjg== X-Forwarded-Encrypted: i=1; AFNElJ/es5xbOf9tNrSCb7WbFkB4IkfMlgvhFVYDEIH+ySepsUECAaFdZg7h5VMAQ4jZG0zRiZLN+VJq5mwttMQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzHMIc8rv0E2MZZjvobfVgbHG37MyGAxkFbWbgVILPF+I9fII+9 DdhEIDVxPqz3IlF8l0VxpmKtTyFu8JdGvSjzZ5yNJp5jmxgSIkXtVGvkRfQ7euHQS1RhSanjQnY gJrXkCIM= X-Gm-Gg: AeBDieu8s6/22Svsp4S8P4T+KuvU6VJ4Bf2KS6pro9S8+eHVOBKSH9XDhOK4Ie7URb+ Pj9sgHMEHNfGjlnAcuZUTFn098SUa0JlLbH3pKL2iA2kdxP9ZWhIb90f1nZF27E3lFtoZnmdm2+ BaOxUrZfisB8Xj5sJCbslQO1g7AsvXXXibI/MLVl6vZCTf9MMah3CGMv3aYP3iN+HLHlBKZIZFu //hHL1TZEYrvVN3rlNlLCygL8RyBhqcuwZewA0vD+/s7XHGyA65YBXCQ/BPCfK47baf1Ff7u3Jx OOLrMX8yHEOlHsn2XmmKOYiEIJIihuESNQRtt3PywPe2XhrW4rqk6N8yHMs2QuDOuUe9ccsoXYJ qNN7IMbwSX/mF4Y2Ga1ZBMJO6bO8Nm8T883FYI7YWBN7fMMBb69hB+u5ptJwS3cH1Jh/Iviffgj 1lgtVBTrJ/0WHzAa6N9aRyuLqG X-Received: by 2002:a05:600c:a315:b0:485:ae14:8191 with SMTP id 5b1f17b1804b1-48a77af3e1bmr89089225e9.5.1777473279194; Wed, 29 Apr 2026 07:34:39 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6bbace7sm1225062e0c.5.2026.04.29.07.34.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:38 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:52 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-10-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=5203; i=rbm@suse.com; h=from:subject:message-id; bh=P1kmeBBxz6oLlrcr3TGMtgJ39fvP2CkFwTpn0Vo40DI=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QA1luf9LI1pFBWCJfQKemsD66feofwmQVmFsvvd6r8/8TrTb5z+2GlnP2XaRKBkpj8E7Gx00e/A gIUUIg8AjpAM= 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. 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. 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 | 17 +++++++++++++++++ tools/testing/selftests/bpf/testing_helpers.h | 1 + 5 files changed, 29 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..5a864cd8ad1b 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) {} +noinline __weak void uprobe_multi_func_2(void) {} +noinline __weak void uprobe_multi_func_3(void) {} =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..3f7ae76c209b 100644 --- a/tools/testing/selftests/bpf/testing_helpers.c +++ b/tools/testing/selftests/bpf/testing_helpers.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include "disasm.h" @@ -516,3 +517,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 Tue Jun 16 19:37:17 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (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 2DB24364057 for ; Wed, 29 Apr 2026 14:34:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473285; cv=none; b=saNAKWr54ifio6xcJJ5EPEFddXNLr4PcHKnCo1pezXixXlHg0sjNxvT2Cxp5nXx0PJPHinEbjEv9hIM75a9w9tDNscHzI+FJRK0wj+HIi/mnS+/6pO2xEv2UXEr9l50hjyzMYQuUKJDUSqeJPi+k5ABf+tufW3/Eh+V0i9oMGJQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473285; c=relaxed/simple; bh=QlnphXbIZwkpSF4vwnCRoGf/LwYmdqzZuMpKhZCGNVo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F/uj+M4jlIFx0VgbXdzkI/kEdeVu4yVIzuBnKKeUUFdYKkCcXDg81YRihXkRCycQNJZhChyJxNApVcsxCHkjW6/jWWOaGZG07RKyf89XtIcmvwRlnWl9GCuAyUxMhDXXyu000TDubmmsX8AuWbwQl1WFQDluejFUwci7wWh02EI= 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=ClcSAlIK; arc=none smtp.client-ip=209.85.128.50 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="ClcSAlIK" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4890d945eb4so5977755e9.0 for ; Wed, 29 Apr 2026 07:34:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777473282; x=1778078082; 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=3pA8Vhc9DANl97GkJYN+mTuDBA8W99vr/NFCFT5xJ6I=; b=ClcSAlIKLzRAo/E2uYKp2V05eXi4aIku8Da3n6jsmoHLG6XiN97weVDgVOAJ0HCyBW hlKhjKXIMWi1MPLEbExUcgR5ALzEPpzzyL6pUAXhRpepFAah4pIWCVvHdyHbbWI141oQ RyJQQwV4Ia4rchZCnckhSeXvNQ42ZSl0LxkZuATjqw2EiNrYcuTSCw99Oe8OWN0RG2Vb b6PS7/Zo3F+AeUoRq3DoKFDxjrmxKBRigRWbiscuqg8lNjdnPPb0yxGFewDHwtbdiMgi N8BZVZPDqKEWYOZzNwRVK9bGWux9CeadGz5MFrAEziu4x1p9yhQU90jPj+73l54GhD85 FzAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473282; x=1778078082; 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=3pA8Vhc9DANl97GkJYN+mTuDBA8W99vr/NFCFT5xJ6I=; b=Lh/WhrIhX9G0/D0YeWfMMEq3ej0kQd3EwIzYI21JTLJLbLVJjAkEGMHQOfMEhS9+o+ GuSuuH9wZks539RD/luTmGQvOQ4ICox1I/QSeBO84Mhj3/Dru3jMFaEuj/W7GQNGb7IU w6LNn/QJzx/fsW54W9cVcoPzlx1EbwmkxlFH1I4y3WDtVMVIS6ANsL8gVakxMr7ePF1/ 4LEp44KJwflwM8QKNbrh16w3Wv3IjLncChKRgDqI2Z5YzMTEJ9ZinEMJk/TozVt5TibC V5ikjTF7+BQ7sxPnP504mfjRQ8FfThg53zNKDCjqSmrN1dfh02FF4mNUBFN4l7vQOkyf YMiA== X-Forwarded-Encrypted: i=1; AFNElJ/9oh00mCUyvzsdcAwR1iOJs8bkjvYvI6PbQW1QFIzKBUULyCRhgSIaCGKOjVGsdkpO9nvll+i61970Wkk=@vger.kernel.org X-Gm-Message-State: AOJu0YzpYCO5/zBrgVr0vDCUSIFu4z3xE/ShyutJ7eL3ue/UTswQ38jc ooA+YaxPqDHsHDn6WSUVL0owySq7mRJHuAr1ss7SC7yW+8lJgvs4lD22hdKmF+1J3LcZKNqGtyk zi0fenoU= X-Gm-Gg: AeBDievfGlIO/OWRS16mxPsNwB/hCkrMpVRyfDBYgz64+mWeANrfC9dDMPFHgJu0369 AGNsauuVQAq3mMTo4frfPCyvxB6rOX5h1tIOEQyF3oIluO+rtHxS2QoFNWgZmNfzL9FfqlAWqt0 g+EkyVToPq+wzFGfdpuyVMyArPXFJXzsZ2NbiJnQ57ZzaqFkB8EdRzZSGAZBlohFMbiQ/xr0z1D zUVaWwDPg9BfKXcssi+w30Ejdiks0xfrtoWfxZSH4fguk5tPuiL3Q3hljLWtin2w0PVrXd1KbSD LlR3sES37yPdbttiS0NoPCQovy/RWmPLx7jsQbLpNkfCzF8wTycOvR7EZmNGSBSqqqQzc36SQn3 jolzT4wrgI0mSfS5lhcTQqz85i+qsF/PBTkYjmyeDo/QUTx6AUMBQeMJUXA5z1WlLX++0+YvHDf 3y+MolYS9GyqOFAGk1xM1L+DcQcFE5ACpcmLQ= X-Received: by 2002:a05:600c:29a:b0:486:fcc7:6811 with SMTP id 5b1f17b1804b1-48a7c81f998mr32567305e9.10.1777473282131; Wed, 29 Apr 2026 07:34:42 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-62982135e26sm1155487137.3.2026.04.29.07.34.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 07:34:41 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Wed, 29 Apr 2026 11:33:53 -0300 Subject: [PATCH bpf-next v9 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: <20260429-selftests-bpf_misconfig-v9-11-c311f06b4791@suse.com> References: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@suse.com> In-Reply-To: <20260429-selftests-bpf_misconfig-v9-0-c311f06b4791@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=1777473237; l=2156; i=rbm@suse.com; h=from:subject:message-id; bh=QlnphXbIZwkpSF4vwnCRoGf/LwYmdqzZuMpKhZCGNVo=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QLX4yiW64I6RKHzS/sib+IHUvxGgX3Dyy9/zjZ0Sn3ohSM5MHnNmurZMfXtcOsbXtk6ntUEtcGs inByZDTwzLwg= 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 db4ff951fc88..2822f09c37eb 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -1023,12 +1023,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