From nobody Sun Feb 8 18:48:46 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 2728035E53B for ; Fri, 9 Jan 2026 13:00:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767963636; cv=none; b=kxV2TCHxdNQOPnwnRX9BQJkdGYmTb7Yp9itMzCcYN0vyrfU5K1TDrzInxnHCMTkgQFQwwkdJe+StvYFqDNxczNtCw/lnh/fwUYbd3E5yYkoaitO7ctOIMUmCCBzRF7bS+lHcSFyEANBu8Ybyxv5dYpLCKQggxnuGrGGplfqvGuQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767963636; c=relaxed/simple; bh=I7eY37GsTyoXAh2wI+oSWMcZ+lGsgT+0+h2fMUYmJ2s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gArRODnL/AN9TYNOvUVew4/+oQMbEhlFf5TKWzPhk1W0w13v1kmK3rAVB1rzB5wNSdLDeEhMe0E2Duhj/tDWk7jNGHBdg5+PCX6VdjKcX09ldhzlz6rd+gRCvelLYBvnmXNUZ1IHEFvZxloKH9qZJ0KFwxEoshR4kW9AI/ddtUc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SksYxhhm; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SksYxhhm" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2a3e76d0f64so14126895ad.1 for ; Fri, 09 Jan 2026 05:00:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767963633; x=1768568433; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3mmxvmI6t4HDfgNI7x8o7q25F6wuDxougz7BYJ8lGNw=; b=SksYxhhmwwRk/L+yd7O3uO8/vCTdT/IHEd2MkMxAaxMCkC9VwByAdYKaCqsKMD5V3q wA5P6yv/Cg714ntI2a5x24zttVbDCcrm9Y7eLiVqGLjX1YSr7CM6FHq908htKXepEsvs C09Cdn1np8kLEQzLGHafs6Woy53hbN2KfUtCm2kTm7q0RKIa/9dw+zVB2HmbtWuuL9XY xpV2HzfVYJPdxXncS2th1cHOQb6nl8ArsmLHnHyefYwcLIta0fHLw5+YgyUuGY5QmcjL QV9kltw4rDfv+qO/DRb0M7xCoi2oUX0R5EXwtVDcR8vuoUhANVA4VriNmfVHvwbs22Qe PwoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767963633; x=1768568433; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=3mmxvmI6t4HDfgNI7x8o7q25F6wuDxougz7BYJ8lGNw=; b=Tva05MtYnu1+FI9fCOYb95vI22SQQ1rXNQFUt7eGFpQRoS3zp3k9tOynCarp+HSk5C Kzk3EKl1uqPlIlMcvib1wlUTYmIlVlpf6DJkcIkVUzT4Nl4j+IG8YY9vrJ0x6+UwxuCu W+SGHi9F/ihq4nD2DYBbxwLddXtkHEdwyyHej7nmiqNJEznqgcQReTo31eDzto83SS9G +x7r5fKC3hOex+5gZtPGLPG95wmOSbIQxtrVwkLrPkB1Nq+o21CmjiDK1xDjk71Aakbo +mQlbXdJ1ldgmVVRXZLISHH3r/cttyq0EdW5i9d06TBeyUr60g+2KFU1dVaug0UIe2t8 n93g== X-Forwarded-Encrypted: i=1; AJvYcCUU98gcGeIhuoieiqQOtXWSFSdchvGayO8csMsHOofTRaN7XVokwNqPk+bGO82ByLK79a/AuJr6PBTWAdM=@vger.kernel.org X-Gm-Message-State: AOJu0YxoIfLWzSRRQ3ZL2RfhaowyeCbbf9FC0O/rgbwrwzKRFmwva/+M BB7vggVGKGii2N7F+rqCcUDEWgqQ1mQiVMehDcPqHppB46y0xL7H6yj2 X-Gm-Gg: AY/fxX7mFzsqAIz+FkGPfR8miDvjmFXlQ/aUzAibZvIAHMFPWJtxdA9ewSZMtmV2g5V DUeX0gc1M76IwI1tsUuf2DnCt+fUIdOkCVfQK5fyrWuX/i3V2X4LX1DOJIInHITEiv/oEzaN0lt M5gdo0Izv3bXH/cPBkP91eopAHKf6fkg54nBzKPx++w49vyvVwnsosRFPOzpUhJuf7sbTpTcq7S b0yLUly08h1LMVT8Xi8P6jk9d1NjlRd2EBnn9iAzBdKfnPgF1wxlbHz2Bq42hc964yX8ViV57jY XC5GyLuW5/82UHt5OI1VvRl8rStC42A5fmBlwSVscYihZhxX+6eZVhaR+6jgYocvLh1D9I8gdjb YlYIhGMT7XeYmGMgh5NEWNpkRqeF1QoTypS6zQFhngNPb0X7L2dXAGSnYlJcj40ZgkSQiCzKWNR VJ/Y5Qal+B4G2rPjndySoaLjKFKus= X-Google-Smtp-Source: AGHT+IFoDc8zaNyyFce5gCCCHC7gM3YATlAegS9bI1XtcQ7NPXKyJ161Oc8IFC3/EUDLdresQG1BLg== X-Received: by 2002:a17:903:350d:b0:269:7840:de24 with SMTP id d9443c01a7336-2a3e39e5b74mr113131885ad.21.1767963633180; Fri, 09 Jan 2026 05:00:33 -0800 (PST) Received: from pengdl-pc.mioffice.cn ([43.224.245.249]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c3a328sm104927325ad.4.2026.01.09.05.00.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jan 2026 05:00:32 -0800 (PST) From: Donglin Peng To: ast@kernel.org, andrii.nakryiko@gmail.com, eddyz87@gmail.com Cc: zhangxiaoqin@xiaomi.com, ihor.solodrai@linux.dev, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, Donglin Peng , Alan Maguire Subject: [PATCH bpf-next v12 08/11] bpf: Skip anonymous types in type lookup for performance Date: Fri, 9 Jan 2026 21:00:00 +0800 Message-Id: <20260109130003.3313716-9-dolinux.peng@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260109130003.3313716-1-dolinux.peng@gmail.com> References: <20260109130003.3313716-1-dolinux.peng@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Donglin Peng Currently, vmlinux and kernel module BTFs are unconditionally sorted during the build phase, with named types placed at the end. Thus, anonymous types should be skipped when starting the search. In my vmlinux BTF, the number of anonymous types is 61,747, which means the loop count can be reduced by 61,747. Cc: Eduard Zingerman Cc: Alexei Starovoitov Cc: Andrii Nakryiko Cc: Alan Maguire Cc: Ihor Solodrai Cc: Xiaoqin Zhang Signed-off-by: Donglin Peng Acked-by: Eduard Zingerman --- kernel/bpf/btf.c | 10 ++++++---- kernel/bpf/verifier.c | 7 +------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 12eecf59d71f..686dbe18a97a 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -3534,7 +3534,8 @@ const char *btf_find_decl_tag_value(const struct btf = *btf, const struct btf_type const struct btf_type *t; int len, id; =20 - id =3D btf_find_next_decl_tag(btf, pt, comp_idx, tag_key, 0); + id =3D btf_find_next_decl_tag(btf, pt, comp_idx, tag_key, + btf_named_start_id(btf, false) - 1); if (id < 0) return ERR_PTR(id); =20 @@ -7844,12 +7845,13 @@ int btf_prepare_func_args(struct bpf_verifier_env *= env, int subprog) tname); return -EINVAL; } + /* Convert BTF function arguments into verifier types. * Only PTR_TO_CTX and SCALAR are supported atm. */ for (i =3D 0; i < nargs; i++) { u32 tags =3D 0; - int id =3D 0; + int id =3D btf_named_start_id(btf, false) - 1; =20 /* 'arg:' decl_tag takes precedence over derivation of * register type from BTF type itself @@ -9331,7 +9333,7 @@ bpf_core_find_cands(struct bpf_core_ctx *ctx, u32 loc= al_type_id) } =20 /* Attempt to find target candidates in vmlinux BTF first */ - cands =3D bpf_core_add_cands(cands, main_btf, 1); + cands =3D bpf_core_add_cands(cands, main_btf, btf_named_start_id(main_btf= , true)); if (IS_ERR(cands)) return ERR_CAST(cands); =20 @@ -9363,7 +9365,7 @@ bpf_core_find_cands(struct bpf_core_ctx *ctx, u32 loc= al_type_id) */ btf_get(mod_btf); spin_unlock_bh(&btf_idr_lock); - cands =3D bpf_core_add_cands(cands, mod_btf, btf_nr_types(main_btf)); + cands =3D bpf_core_add_cands(cands, mod_btf, btf_named_start_id(mod_btf,= true)); btf_put(mod_btf); if (IS_ERR(cands)) return ERR_CAST(cands); diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 53635ea2e41b..53aa8f503775 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -20652,12 +20652,7 @@ static int find_btf_percpu_datasec(struct btf *btf) * types to look at only module's own BTF types. */ n =3D btf_nr_types(btf); - if (btf_is_module(btf)) - i =3D btf_nr_types(btf_vmlinux); - else - i =3D 1; - - for(; i < n; i++) { + for (i =3D btf_named_start_id(btf, true); i < n; i++) { t =3D btf_type_by_id(btf, i); if (BTF_INFO_KIND(t->info) !=3D BTF_KIND_DATASEC) continue; --=20 2.34.1